它表示成功,但它并没有真正将值插入数据库。 idk最近怎么回事。
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);
答案 0 :(得分:2)
您的echo语句未包含在条件中,并在执行查询之前运行。因此,无论如何,“成功”都会得到回应。
相反,您需要检查mysql_query
的响应以查看它是否成功执行,然后根据该结果采取行动(如回显“成功”)。
mysql_query()
始终在出错时返回false
,因此您可以检查$qry
以查看它是否为假:
if ($qry === false) {
echo "Query failed";
// take action as needed
}
else {
echo "Success";
// take action as needed
}
要查看导致失败的确切错误,请使用mysql_error()
。您可以在上面的代码的“失败”部分执行此操作。
在这种情况下,失败是由查询中的两个错误引起的:
<强>语法强>
'firstname'之前缺少一个反引号:
'INSERT INTO `user`(firstname`,
应该是
'INSERT INTO `user`(`firstname`,
列/值计数不匹配
您的查询指定将填充六列:
(`firstname`, `lastname`, `email_address`, `password`, `mobile_number`,`location`)
但提供了七个值:
"'.$firstname.'",
"'.md5($password).'",
"'.$lastname.'",
"'.$emailaddress.'",
"'.$password.'",
"'.$mobile_number.'",
"'.$location.'");'
弃用警告
注意:不推荐使用mysql_*
函数;它们已被PDO取代。考虑到安全性和稳定性,请考虑修改代码以使用PDO。
答案 1 :(得分:1)
它不起作用,因为有7个值和6列,并且您错过firstname
列周围的反引号。值和列的数量必须相同。您始终回显Success
,因为您不检查$qry
是否为false
(错误时返回false)。最后,您不应该使用mysql_*
函数,因为从PHP 5.5开始,它们已被正式弃用。使用PDO或MySQLi。
答案 2 :(得分:0)
你也错过了第一个名字的反差...
应该是:
$registerQuery = 'INSERT INTO `user`(`firstname`, `lastname`