【问题标题】:what is wrong with this sql query?这个sql查询有什么问题?
【发布时间】:2010-02-15 06:55:40
【问题描述】:

这个 sql 查询有什么问题。我想不通。

    $query = "SELECT *
    FROM tagPairs
    WHERE (tag1Id IN ($tag1Id, $tag2Id))
    AND (tag2Id IN ($tag1Id, $tag2Id))";

错误代码:

无法执行查询:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 ' )) 附近使用的正确语法 AND (tag2Id IN (, ))' 在第 3 行

提前致谢!

【问题讨论】:

    标签: sql mysql


    【解决方案1】:

    $tag1Id$tag2Id 都是 null 或空字符串。最简单的解决方案可能是将它们显式转换为数值:

    $tag1Id = intval($tag1Id); $tag2Id = intval($tag2Id); $查询=“选择* 来自标签对 WHERE (tag1Id IN ($tag1Id, $tag2Id)) AND (tag2Id IN ($tag1Id, $tag2Id))";

    【讨论】:

      【解决方案2】:

      $tag1Id$tag2Id 为空。

      这就是为什么您的错误显示为(tag2Id IN (, ))

      【讨论】:

        【解决方案3】:

        您的 $tag1Id$tag2Id 是空字符串。为它们分配一个值,它应该可以正常工作。

        另外,选择 * 是个坏主意。选择您需要明确的列。

        【讨论】:

        • 如果我不需要任何专栏怎么办。我只是想检查表中是否存在一行。那我应该用什么代替 * 呢?
        • 在这种情况下使用“select 1 where exists (select * from ...)”
        猜你喜欢
        • 2011-01-15
        • 2010-10-21
        • 2015-08-08
        • 1970-01-01
        • 1970-01-01
        • 2011-09-28
        • 1970-01-01
        相关资源
        最近更新 更多