2014-06-26 53 views
0

嗨我想创建一个小的电子邮件订阅者脚本来添加电子邮件地址到我的数据库。我能够使用不推荐使用的函数(如mysql_connect)正常工作,但是使用mysqli代替它会更好。但由于某种原因,我不能再将电子邮件地址插入到数据库中,但我可以连接到数据库,并检查电子邮件地址是否已经存在。我想知道为什么我的INSERT似乎没有工作。我没有太多的PHP经验,谢谢。php mysql连接到数据库,但不能插入

if (!$link) { 
    echo "save_failed cannot connect"; //if cant connect show error 
    return; 
    } 
    mysqli_select_db($link,$mydb); 

// Clean variables before performing insert 
$clean_email = mysqli_real_escape_string($link,$_POST['email']); 
$clean_subscriber = mysqli_real_escape_string($link,$_POST['firstname']); 
$clean_date = mysqli_real_escape_string($link,$_POST['date']); 

$query = "SELECT * FROM EmailList WHERE email = '{$email}'";//check if already in list 
$result = mysqli_query($link,$query); 
$row_cnt = mysqli_num_rows($result); 


if($row_cnt == 0) { 
// Perform insert if not in list 
$sql = "INSERT INTO EmailList (Email,Name,Date) VALUES 
('$clean_email','$clean_subscriber','$clean_date')"; 
    echo "Thank you for Subscribing to my blog!"; 
} else { 
    echo "You have subscribed already. Thank you for subscribing"; 
} 
+4

你不是在查询'$ sql' var ..就像你对select所做的那样做一个'mysqli_query'。 –

+0

'date'也是一个保留关键字,它以ticks(') –

+1

为单位,应该没有任何理由事先查询数据库以查看电子邮件是否已经存在。只需在电子邮件字段中创建唯一索引并直接转到插入,在存在重复插入尝试的情况下处理错误。每次运行脚本时,这会为您节省一次针对数据库的查询。您还应该始终检查数据库交互中的错误 - 连接时,查询时等。处理这些错误情况的代码将变得非常简单,而且更容易调试。 –

回答

2

你好像缺少运行查询行:

mysqli_query($link,$sql); 
+0

感谢您的评论。我认为这会修复它,但由于某些原因,它仍然没有插入到数据库中。 – user2002077

+0

尝试'mysqli_query($ link,$ sql)或reportMySQLiError($ mysqli);'并查看出现了什么错误。 – wogsland

2

您需要

mysqli_query()

等执行查询所以:

if (!$link) { 
    echo "save_failed cannot connect"; //if cant connect show error 
    return; 
    } 
    mysqli_select_db($link,$mydb); 

// Clean variables before performing insert 
$clean_email = mysqli_real_escape_string($link,$_POST['email']); 
$clean_subscriber = mysqli_real_escape_string($link,$_POST['firstname']); 
$clean_date = mysqli_real_escape_string($link,$_POST['date']); 

$query = "SELECT * FROM EmailList WHERE email = '{$email}'";//check if already in list 
$result = mysqli_query($link,$query); 
$row_cnt = mysqli_num_rows($result); 


if($row_cnt == 0) { 
// Perform insert if not in list 
$sql = "INSERT INTO EmailList (Email,Name,Date) VALUES 
('$clean_email','$clean_subscriber','$clean_date')"; 
mysqli_query($link,$sql) 
    echo "Thank you for Subscribing to my blog!"; 
} else { 
    echo "You have subscribed already. Thank you for subscribing"; 
} 
+0

谢谢大家认为我明白我要去哪里错了。现在会测试它。 – user2002077

+0

我仍然无法让它与上述建议一起工作。我正在腌制 – user2002077

+0

您是否收到任何错误?尝试运行这个函数来查看mysqli_error($ link) – GaijinJim