【发布时间】:2011-07-30 04:22:23
【问题描述】:
我在这个 PHP 代码上遇到语法错误:
<snip>
$last = (isset($_GET['last']) && $_GET['last'] != '') ? $_GET['last'] : 0;
$query = "SELECT message_id, user_name, message, date_format(post_time, '%h:%i') AS post_time" .
" FROM message WHERE chat_id = " . db_input($_GET['chat']) . " AND message_id > " . $last . ";";
$message_query = db_query($query);
</snip>
还有db_query:
function db_query($query, $link = 'db_link') {
global $$link;
$result = mysql_query(mysql_real_escape_string($query), $$link) or db_error($query, mysql_errno(), mysql_error());
return result;
}
确切的错误是这样的:
You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near '\' %h:%i\')
AS post_time FROM message WHERE chat_id = 1 AND message_id > 0' at line 1<br><br>
SELECT message_id, user_name, message, date_format(post_time, '%h:%i') AS
post_time FROM message WHERE chat_id = 1 AND message_id > 0;
如您所见,它会在我的代码中没有/看到的字符上引发错误。这是怎么回事?
【问题讨论】:
-
您确定没有转义整个查询字符串吗?您能否也包括您的查询调用?
-
好吧,发布您正在使用的确切代码,但似乎有些部分在不应该添加斜杠。
-
@John: 为什么在使用前不回显 $query?
-
@Hoàng:回显 $query 会输出正确的(不带“\”)查询。