PHP& SQL:子查询不起作用

时间:2014-06-11 20:47:58

标签: php mysql subquery

我对子查询有以下查询,这是php代码:

$staticsQuery = "SELECT * FROM statics WHERE mmsi = (SELECT mmsi FROM positions,active WHERE active.mmsi = positions.position_ID)";
$staticsResult = mysql_query($staticsQuery);
        while($rows = mysql_fetch_array($staticsResult)){
            echo $rows['time'];
            echo $rows['mmsi'];
            echo $rows['name'];
            echo $rows['imo'];
        }

子查询部分正常工作,打印出结果。我不确定这个外部查询部分是否正确: SELECT * FROM statics WHERE mmsi =

这是我得到的错误,

  

警告:mysql_fetch_array()要求参数1为资源,第44行的C:\ xampp \ htdocs \ retrieve.php中给出布尔值

错误显然来自mysql_fetch_array,因为查询不返回结果。请不要将此问题标记为重复,因为此错误消息可能存在许多不同类型的问题。

欢迎任何帮助!

2 个答案:

答案 0 :(得分:0)

如果您有多个结果,则需要IN而不是=

答案 1 :(得分:0)

您可以通过两种方式重写它。

1)修复子查询以使用" IN"

SELECT * FROM statics WHERE mmsi IN(选择mmsi FROM位置,活动WHERE active.mmsi = positions.position_ID)

2)使用JOIN而不是子查询

来自静态的SELECT s。* INNER JOIN位置p ON s.mmsi = p.mssi INNER JOIN激活ON p.position_ID = a.mmsi