让我首先声明,您将看到我在这个问题中仍然使用一些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;
}
}