PHP mysql连接到数据库,读取但不插入


php mysql connecting to database, reading but not inserting

嗨,我试图创建一个小的电子邮件订阅脚本添加电子邮件地址到我的数据库。我能够使用过时的函数(如mysql_connect)使其正常工作,但我使用mysqli使其更好。然而,由于某种原因,我不再能够将电子邮件地址插入数据库,但我可以连接到数据库,并检查电子邮件地址不存在。我想知道为什么我的INSERT似乎不工作。我没有太多的PHP经验,谢谢。

    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";
}

看起来您错过了运行查询的行:

mysqli_query($link,$sql);

您需要使用

执行查询

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";
}