0

我在发送查询时遇到问题,这让我有点发疯,这就是我所说的:

 $query = "INSERT INTO combined(v_products_model, v_products_image, v_products_description_1, v_products_name_1, v_products_quantity, v_tax_class_title, v_status, EOREOR) " .
            "VALUES ('$fileName', '$fileName', '$description', '$description', '10', '--none--', 'Active', 'EOREOR')";
    mysql_real_escape_string($fileName);
    mysql_real_escape_string($description);
    $queryResult = mysql_query($query, $connect);
//  die(var_dump($queryResult));

if (!$queryResult) {
    die("Error with query: line 40 <br>
                 Query: $query <br>
                 Error: " . mysql_error());
}

由于某种原因,if 语句总是运行,我尝试将 $queryResult == false 作为参数,但结果相同。

我知道$queryResult这不是假的,因为我在上面运行了一个die()语句并返回了“1”,我也运行了var_dump它并返回了“布尔真”。

mysql_error()从不返回任何结果。如果有人能告诉我为什么该块正在运行,我将不胜感激。

这是实际打印的内容,顺便说一句,它也没有转义查询:

Error with query: line 40 
Query: INSERT INTO combined(v_products_model, v_products_image, v_products_description_1, v_products_name_1, v_products_quantity, v_tax_class_title, v_status, EOREOR) VALUES ('ts_aiw_wereall.jpg', 'ts_aiw_wereall.jpg', 'ALICE IN WONDERLAND we're a sk PUR TS S', 'ALICE IN WONDERLAND we're a sk PUR TS S', '10', '--none--', 'Active', 'EOREOR') 
Error:
4

2 回答 2

1

从您生成的查询中:

'ALICE IN WONDERLAND we're a sk PUR TS S'
                       ^--- unescaped quote

由于您在生成查询字符串之后执行 mysql_real_escape_string() ,因此您不会转义进入查询的文本,并且您的查询失败。PHP 不会神奇地及时返回并重新调整您的$query = ...行以反映转义调用的值。

这并不能解释为什么不显示错误消息。关于我所能想到的,你有多个连接到 MySQL,并且正在对$connect连接执行查询,这不是默认连接(例如最后一个创建的连接),所以 mysql_error() 正在返回错误结果一些没有错误的其他连接。

尝试mysql_error($connect)查看是否收到任何错误消息。

于 2012-05-06T20:36:44.207 回答
-2

这部分代码会因为引号导致查询失败。

'ALICE IN WONDERLAND we're a sk PUR TS S', 'ALICE IN WONDERLAND we're a sk PUR TS S'

您可以使用该函数addslashes()在插入这些值之前对其进行转义。例如

addslashes(ALICE IN WONDERLAND we're a sk PUR TS S);

请记住使用stripslashes()删除对使用的值的引号转义addslashes()

其次,您必须放置这些行

mysql_real_escape_string($fileName);
mysql_real_escape_string($description);

在构建查询之前。

于 2012-05-06T20:45:06.830 回答