我的代码中有一堆数据库调用。
其中一个是这样的:
mysql_query("INSERT INTO coupons (id, retailerName, description, savingsDetails, pictureURL, rating, qrPicture, zipCode, dateAdded, dateExp) VALUES ('$newID', '$retailerName', '$description', '$savingsDetails', '$pictureURL', '0', '$qrPicture', '$zipCode', '$dateAdded', '$dateExp')");
所有其他数据库调用都可以正常工作,但是这个调用只是不会将任何数据写入表中。怎么了?
答案 0 :(得分:4)
检查mysql查询的返回值。
$result = mysql_query($query);
if ($result === false) {
// Prints the query and the mysql error to help you find the problem.
die($query.'<br/>'.mysql_error());
}
如果查询有问题,它会告诉你它是什么。
mysql_query()
成功时返回true,不返回错误的查询返回false。
http://php.net/manual/en/function.mysql-query.php
在生产中使用mysql_query()
时,您应检查返回值,并在出错时正常退出,并最好将其记录下来,以便它可以帮助您解决任何问题。
此外,在执行使用用户输入的查询时,请确保使用mysql_real_escape_string()
来避免SQL注入,并保护包含单引号的输入,这会破坏您当前的查询。
http://php.net/manual/en/function.mysql-real-escape-string.php
答案 1 :(得分:1)
检查查询的返回值以找出正在发生的事情 -
$result = mysql_query("INSERT INTO coupons (id, retailerName, description,
savingsDetails, pictureURL, rating, qrPicture, zipCode, dateAdded,
dateExp) VALUES ('$newID', '$retailerName', '$description',
'$savingsDetails', '$pictureURL', '0', '$qrPicture', '$zipCode',
'$dateAdded', '$dateExp')");
if($result)
{
// Your query succeeded
}
else
{
// Your query failed due to some error
die( mysql_error() );
}
答案 2 :(得分:0)
您可以将其写为mysql_query("INSERT INTO coupons (id, retailerName, description, savingsDetails, pictureURL, rating, qrPicture, zipCode, dateAdded, dateExp) VALUES ('$newID', '$retailerName', '$description', '$savingsDetails', '$pictureURL', '0', '$qrPicture', '$zipCode', '$dateAdded', '$dateExp')") or die(mysql_error());
如果您没有收到错误,则表示它已成功。如果你收到错误,你将直接从mySQL发出错误(所以它应该非常详细)。
答案 3 :(得分:0)
找到问题的另一种方法:记录您的SQL查询,以查看运行时查询的内容。
$str = "INSERT INTO coupons ...";
echo $str;
然后直接尝试对您的数据库进行查询,您将获得不正确的事情。