Php 成功,但未插入数据库

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

它说成功了,但实际上并没有将值插入数据库。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);

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注入保护。如果代码无论如何都要被重构,那么最好利用现有的最佳技术。