Php 成功,但未插入数据库
它说成功了,但实际上并没有将值插入数据库。idk发生了什么事Php 成功,但未插入数据库,php,mysql,phpmyadmin,Php,Mysql,Phpmyadmin,它说成功了,但实际上并没有将值插入数据库。idk发生了什么事 if($_POST['submit']){ $registerQuery = 'INSERT INTO `user`(firstname`, `lastname`, `email_address`, `password`, `mobile_number`,`location`) VALUES ( "'.$firstname.'", "'.md5($password).'", "'.$lastname.'", "'.$emailadd
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语句没有包装在条件中,而是在执行查询之前运行。因此,无论发生什么,“成功”都将得到回应 相反,您希望检查
mysql\u query
的响应,以查看它是否成功执行,然后根据该结果采取行动(如回显“Success”)
mysql\u query()
总是在出错时返回false
,因此您可以检查$qry
以查看它是否为false:
if ($qry === false) {
echo "Query failed";
// take action as needed
}
else {
echo "Success";
// take action as needed
}
要查看导致故障的确切错误,请使用mysql\u 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。 您也错过了第一个名字后面的滴答声……/P> 应该是:
$registerQuery = 'INSERT INTO `user`(`firstname`, `lastname`
它不起作用,因为有7个值和6列,而您在
firstname
列周围缺少一个反勾号。值和列的数量必须相同。您总是回显Success
,因为您不检查$qry
是否为false
(出错时返回false)。最后,您不应该使用mysql.*
函数,因为从PHP5.5开始,它们就被正式弃用了。使用PDO或MySQLi。您总是回显“成功”,这就是为什么它总是显示该消息。您可能需要查看并检查返回值。此外,您还有一个语法错误。。。检查你的记号。。。特别是关于名字……如果可能的话,您可以尝试使用mysqli versionrue,但在firstname
列名周围也缺少一个勾号`
。您也可以使用mysqli.*
。mysqli*
和mysql*
之间的区别不大。您还可以在OOP中使用mysqli*
,因此从mysqli*
开始可能会更好,因为它更简单。PDO更多的是面向对象的mysqli.*
函数是对mysql.*
的改进。对于熟悉mysql.*
函数并且不愿意学习新东西的人来说,它们几乎是替代品。然而,PDO有许多优点,包括它的抽象层和易于通过预处理语句进行SQL注入保护。如果代码无论如何都要被重构,那么最好利用现有的最佳技术。