使用AJAX/PHP/SQL测试数据库的TRUE/FALSE


Testing a Database for TRUE/FALSE using AJAX/PHP/SQL

让我首先声明,您将看到我在这个问题中仍然使用一些Mysql代码。这只是因为我是PDO的新手,为了解决问题,我想确保我的sql和查询正在工作,所以我用我所知道的去了。一旦我让函数工作并且脚本运行,我将转换为PDO。

这是我的问题。我正在提交订阅用户的电子邮件列表(数据库)的形式。它获取所有的信息并将其插入到数据库中。到目前为止,这一切都行得通。然后,我的回调函数应该检查这个用户是否已经在数据库中。

我正在测试,看看一行从数据库返回基于被设置为唯一列的电子邮件列。问题是,即使用户已经在数据库中,sql返回一行说"Duplicate entry",所以我的代码正在读取行Duplicate entry作为结果。有人能给我指个正确的方向吗?

我的jQuery代码…

$('#contForm').submit(function() {       //contForm is the name of my form
var formData = $(this).serialize();
$.post('contact.php',formData,dispAdd);      //dispAdd is the callback
    function dispAdd(result) {
      if (!result) {
        $('#main').html('<div>Your have been added to the mailing list</div>');
     } else {
       if ($('#fail').length==0) {
            $('#main').append('<div id="fail">This email address is already subscribed to our mailing list</div>');
            }
          }
        }
return false;
});

我的PHP/SQL脚本

function dispAdd()
{
 $email= $_POST['email'];
 $sql= "SELECT * FROM mailList WHERE email = '$email'";
 $result= mysql_query($sql) or die(mysql_error());
 $rows = array();
 if(mysql_num_rows($result) > 0)
{
 while ( $row = mysql_fetch_assoc($result)) {
 $rows[] = $row;
   }            
 echo json_encode( $rows );
 }

在玩了一会儿之后,我弄清楚了如何使它工作,但如果有人有其他建议或想法,我很高兴听到他们。我在这里学到了很多,所以我欢迎所有的评论。下面是我是怎么做的:

function dispAdd()
{
 $email= $_POST['email'];
 $sql= "SELECT * FROM mailList WHERE email = '$email'";
 $result= mysql_query($sql) or die(mysql_error());
 if(mysql_num_rows($result) > 0)
    {
 while ( $row = mysql_fetch_assoc($result)) {
                                             }            
 return;
     }
}