成功但不插入数据库

时间:2015-01-21 17:31:14

标签: php mysql phpmyadmin

它表示成功,但它并没有真正将值插入数据库。 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);

3 个答案:

答案 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`