我的SQL查询出了什么问题?

时间:2011-02-16 07:00:01

标签: php sql mysql

我的代码中有一堆数据库调用。

其中一个是这样的:

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')");

所有其他数据库调用都可以正常工作,但是这个调用只是不会将任何数据写入表中。怎么了?

4 个答案:

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

然后直接尝试对您的数据库进行查询,您将获得不正确的事情。