下午好,我有一种情况,我需要在父循环的每次迭代后继续将MySQL结果附加到现有结果上。我正在使用的一个例子如下:
while ($record = mysql_fetch_row($result,MYSQL_ASSOC)) {
$result2 = mysql_query("SELECT * FROM Products WHERE id='".$record['target']."'");
}
我希望在'while'循环的每次迭代时附加到$ result2,这样我就可以在$ result2中有一个完整的列表,以后可以处理。我怎样才能完成这项任务?
谢谢, 戴夫
答案 0 :(得分:1)
为什么不使用IN
方法,而不是运行未知数量的查询,这可能会真正减慢您的应用程序?然后在1个查询中获取所有结果。像:
$ids = "";
while ($record = mysql_fetch_row($result,MYSQL_ASSOC)) {
if( $record['target'] )
{
$ids .= "," . $record['target']
}
else
{
$ids = $record['target'];
}
}
$result2 = mysql_query("SELECT * FROM Products WHERE id IN (".$ids.")");
现在$result2
包含之前$result
;
更多信息
答案 1 :(得分:0)
我相信这就是你要找的东西。
<?
$resultSetQueue = Array();
$results = Array();
$resultSetQueue[] = mysqli_query("SELECT * FROM Products WHERE <Initial Criteria>");
for($i = 0; $i < count($resultSetQueue); $i++){
$in = "";
while($row = mysql_fetch_assoc($resultSetQueue[$i])){
$in .= $row['target']. ",";
$results[] = $row;
}
$resultSetQueue[] = mysqli_query("SELECT * FROM Products WHERE id IN (". substr($in, 0, strlen($in) - 2). ")");
?>
每个查询结果集都会被添加到结果集队列中,当它在for($ i ... loop。)时出现时处理它。
但要小心。这有可能无限循环(直到达到内存使用限制)。
编辑:更好的查询方法 - 使用IN。