$threadID=$_GET['threadID'];
$result=mysql_query("
SELECT * FROM threads AS Threads
INNER JOIN users AS Users ON Threads.user_id=Users.user_id
WHERE thread_id='$threadID' LIMIT 1
") or die(mysql_error());我明白了:
您的SQL语法出现错误;请检查与MySQL服务器版本相对应的手册,以获得在第3行“11”附近使用的正确语法。
我以前写过很多内在连接。为什么我的语法在查询结束时出错?
更新:您的SQL语法出现了错误;请检查与MySQL服务器版本相对应的手册,以便在第3行使用接近“12”限制1的正确语法。
发布于 2011-10-23 15:46:44
首先,您的查询对sql注入攻击非常开放。
其次,要了解为什么会出现语法错误,请将查询构建阶段与实际的查询调用分开:
$sql = "SELECT ....";
echo $sql;
$result = mysql_query($sql) or die(...);这样您就可以看到整个查询。MySQL的错误消息只从它认为错误的地方报告查询的部分,但有时它决定错误,并删除错误所在的实际相关部分.所以..。检查整个查询。
发布于 2011-10-23 16:01:52
也许我知道答案。
我相信,mysql中有一种叫做"strict mode"之类的东西,它对数据类型太挑剔了。
试着让你的查询像这样
$id = (int)$_GET['threadID'];
$sql = "SELECT * FROM threads t INNER JOIN users u ON t.user_id=u.user_id
WHERE thread_id=$id LIMIT 1";
$res = mysql_query($sql) or trigger_error(mysql_error().$sql);发布于 2011-10-23 16:17:48
为什么不以这种方式加入您的查询:
$threadID = mysql_real_escape_string( $_REQUEST['threadID'] ); // Get some cleanup in there...
$result=mysql_query("SELECT threads.*, users.*
FROM threads, users
WHERE threads.user_id = users.user_id
AND threads.thread_id = '$threadID'
LIMIT 1
") or die( mysql_error() );https://stackoverflow.com/questions/7867145
复制相似问题