成功但未插入数据库

Success but doesnt insert to Database

它说成功,但它并没有真正将值插入数据库。我不知道发生了什么事。

if($_POST['submit']){

$registerQuery = 'INSERT INTO `user`(firstname`, `lastname`, `email_address`, `password`, `mobile_number`,`location`) VALUES (
"'.$firstname.'",
"'.md5($password).'",
"'.$lastname.'",
"'.$emailaddress.'",
"'.$password.'",
"'.$mobile_number.'",
"'.$location.'");';
echo 'Success';
}
$qry = mysql_query($registerQuery);

您的 echo 语句未包含在条件语句中,而是在执行查询之前运行。结果 "Success" 无论如何都会被回显。

相反,您想检查 mysql_query 的响应以查看它是否执行成功,然后根据该结果采取行动(如回显 'Success')。

mysql_query() 总是 returns false 出错,所以你可以检查 $qry 看看它是否错误:

if ($qry === false) {
    echo "Query failed";
    // take action as needed
}
else {
    echo "Success";
    // take action as needed
}

要查看导致失败的确切错误,请使用 mysql_error()。您可以在上面的 'failed' 代码部分执行此操作。

在这种情况下,失败是由您的查询中的两个错误引起的:

语法

'firstname'前少了一个反引号:

'INSERT INTO `user`(firstname`,

应该是

'INSERT INTO `user`(`firstname`,

Column/Value 计数不匹配

您的查询指定将填充六列:

(`firstname`, `lastname`, `email_address`, `password`, `mobile_number`,`location`)

但提供了七个值:

"'.$firstname.'",
"'.md5($password).'",
"'.$lastname.'",
"'.$emailaddress.'",
"'.$password.'",
"'.$mobile_number.'",
"'.$location.'");'

弃用警告

注意:mysql_* 函数已弃用;它们已被 PDO 取代。考虑到安全性和稳定性,考虑修改你的代码使用PDO。

您还缺少围绕名字的反引号...

应该是:

$registerQuery = 'INSERT INTO `user`(`firstname`, `lastname`

它不起作用,因为有 7 个值和 6 列,并且您错过了 firstname 列周围的反引号。值和列的数量必须相同。你总是回显 Success 因为你不检查 $qry 是否是 false (错误时 returns 为假)。最后,您不应使用 mysql_* 函数,因为它们在 PHP 5.5 中已被正式弃用。使用 PDO 或 MySQLi。