我对子查询有以下查询,这是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,因为查询不返回结果。请不要将此问题标记为重复,因为此错误消息可能存在许多不同类型的问题。
欢迎任何帮助!
答案 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