【问题标题】:MySQL double query situationMySQL双重查询情况
【发布时间】:2009-05-13 14:24:24
【问题描述】:

还有其他方法来做这个查询吗?

 $query = "SELECT * FROM produto, pt WHERE
        produto.refPT = pt.ref AND
        produto.refPT IN (SELECT idProduto FROM amb_prod WHERE idAmbiente='1');";
    $result_set = mysql_query($query);

问题是我的本地主机有 MySQL 版本 5.1.30-community,但我的在线服务器有 5.0.67-community MySQL 版本。

而且我认为只有当我尝试在在线服务器上运行时才会收到此错误的原因:

mysql_fetch_array(): supplied argument is not a valid MySQL result resource 

【问题讨论】:

  • 检查 mysql_error() 输出,它可能包含足够的信息来确定查询的哪些方面不正确或与生产中运行的版本不兼容。
  • 您是否向任何客户查询过此查询? (例如:phpMyAdmin)
  • 感谢 NinethSense 问题已解决,版本 5.1.30 没有返回错误,因为它不区分大小写。

标签: sql mysql


【解决方案1】:

当您创建一个漂亮的查询视图时,它会让生活更轻松,例如:

$query = "SELECT *
          FROM produto, pt, amb_prod 
          WHERE produto.refPT = pt.ref
          AND produto.refPT = amb_prod.idProduto 
          WHERE amb_prod.idAmbiente='1';";
$result_set = mysql_query($query);

【讨论】:

  • 所有重复的答案是怎么回事?这是#3,它说的是确切的事情。您是否只是更正格式,这是无关紧要的(另外,我以为您在谈论 mysql 视图)?
【解决方案2】:

嗯,在您的测试系统上安装匹配版本的 MySQL 会很有意义,这样您就可以更轻松地调试错误。

你也可以试试这样的……

$query = "SELECT * FROM produto, pt, amb_prod WHERE
    produto.refPT = pt.ref AND
    produto.refPT = amb_prod.idProduto WHERE amb_prod.idAmbiente='1');";
$result_set = mysql_query($query);

【讨论】:

  • 您的查询包含 2 个 WHERE 关键字。用 AND 替换最后一个。另外,一个额外的)
【解决方案3】:

至少为了简化您的查询,您可以使用:

"Select * from produto,pt,amb_prod WHERE
       produto.refPT = pt.ref AND
       produto.refPT=amb_prod.idproduto AND
       amb_prod.idAmbiente='1';"

虽然我建议选择字段而不是“*”。我还想知道您为什么引用“1”,那不是数字字段吗?

【讨论】:

    【解决方案4】:

    去掉末尾的分号,看看是否有帮助。

    在一些桥接实现(将您的语言连接到 MySQL 服务器的东西)上,您的查询字符串实际上是两个查询:

    SELECT * 
    FROM produto, pt 
    WHERE
     produto.refPT = pt.ref AND
     produto.refPT IN (SELECT idProduto 
                       FROM amb_prod 
                       WHERE idAmbiente='1')
    

    还有……

    [Blank]
    

    一些桥可能会混淆要返回哪个结果集(SQL 或空白查询的结果)以及空白查询是否可接受。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-06
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多