【问题标题】:mysqli subquery string didn't works [duplicate]mysqli子查询字符串不起作用[重复]
【发布时间】:2014-05-28 18:08:09
【问题描述】:

我有一个不工作的 mysql 查询。它给了我以下错误:

mysqli_query() 期望参数 1 为 mysqli,给定 null

我的sql查询是:

$select = mysqli_query($sql, "SELECT title FROM category WHERE id LIKE (SELECT categorie_id FROM categories_sub WHERE file LIKE '".$site."')")

【问题讨论】:

  • $sql 必须是 MySQLi 的实例。你在实例化它吗?
  • $sql
  • 这是我的数据库连接变量。
  • 那么,您的数据库连接代码是什么样的?该错误不会无缘无故弹出。你是在课堂上使用它吗?另外,从我在您的其他问题中看到的情况来看,到目前为止,一切似乎都很好。
  • 好的,它可以工作。错误的原因是,我错误地使用了不正确的数据库名称。

标签: php mysql sql mysqli


【解决方案1】:

查询将不起作用,您的查询在做什么

WHERE id LIKE (SELECT categorie_id FROM categories_sub WHERE file = 'some val')

这类似于

WHERE id = {multiple categorie_id} 

当子查询有多个 categorie_id 时会返回错误。

所以替换

category WHERE id LIKE 

category WHERE id IN ( ...

【讨论】:

  • 我的查询看起来像"SELECT title FROM category WHERE id IN (SELECT categorie_id FROM categories_sub WHERE file LIKE '".$site."')",但它仍然无法正常工作。错误是一样的..
【解决方案2】:

这个错误往往意味着您没有正确连接到数据库。仔细检查您的连接。此外,file LIKE 'x' 等价于 file='x'。要搜索包含“x”的字符串,请使用file LIKE '%x%'

编辑:其他答案是正确的,您需要使用IN 而不是LIKE 作为第一个(即在另一个查询中定义的集合的成员)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 2018-01-13
    • 1970-01-01
    • 2018-05-12
    相关资源
    最近更新 更多