首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql内部连接,语法错误,有关php查询

mysql内部连接,语法错误,有关php查询
EN

Stack Overflow用户
提问于 2011-10-23 15:41:12
回答 3查看 2.2K关注 0票数 0
代码语言:javascript
复制
       $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的正确语法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-23 15:46:44

首先,您的查询对sql注入攻击非常开放。

其次,要了解为什么会出现语法错误,请将查询构建阶段与实际的查询调用分开:

代码语言:javascript
复制
$sql = "SELECT ....";
echo $sql;
$result = mysql_query($sql) or die(...);

这样您就可以看到整个查询。MySQL的错误消息只从它认为错误的地方报告查询的部分,但有时它决定错误,并删除错误所在的实际相关部分.所以..。检查整个查询。

票数 3
EN

Stack Overflow用户

发布于 2011-10-23 16:01:52

也许我知道答案。

我相信,mysql中有一种叫做"strict mode"之类的东西,它对数据类型太挑剔了。

试着让你的查询像这样

代码语言:javascript
复制
   $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);
票数 1
EN

Stack Overflow用户

发布于 2011-10-23 16:17:48

为什么不以这种方式加入您的查询:

代码语言:javascript
复制
$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() );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7867145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档