成功但未插入数据库
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。
它说成功,但它并没有真正将值插入数据库。我不知道发生了什么事。
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。