当我在 mysql 中运行此查询时,它会正确返回所有请求的结果:
SELECT row_id FROM table1 WHERE status = n
UNION ALL
SELECT row_id FROM table2 WHERE status = n
UNION ALL
SELECT row_id FROM table3 WHERE status = n
但是,当我从 PHP 运行它时,它仅返回一条记录,即满足请求条件的第一行。
$query = mysqli_query($link, "SELECT row_id FROM table1 WHERE status = n
UNION ALL
SELECT row_id FROM table2 WHERE status = n
UNION ALL
SELECT row_id FROM table3 WHERE status = n");
print_r(mysqli_fetch_array($query));
因此 print_r
显示以下内容:Array ( [0] => 1 [row_id] => 2580 )
,其中 2580 是一个 id table1 中满足请求条件的行。
如何让它返回完整的结果数组?
最佳答案
您可以尝试循环打印数据,例如:
$query = mysqli_query($link, "SELECT row_id FROM table1 WHERE status = n
UNION ALL
SELECT row_id FROM table2 WHERE status = n
UNION ALL
SELECT row_id FROM table3 WHERE status = n");
while($row = mysqli_fetch_array($query)){
print_r($row);
}
简单地说,mysqli_fetch_array 仅返回循环中的当前行。您需要循环遍历它才能获得所有结果。
关于php - UNION 查询在 mysql 中工作,但在 php 中工作不一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22199551/