大家下午好,我遇到了这样一种情况:在父循环的每次迭代之后,我需要继续将MySQL结果追加到现有结果上。我正在使用的示例如下所示:
while ($record = mysql_fetch_row($result,MYSQL_ASSOC)) {
$result2 = mysql_query("SELECT * FROM Products WHERE id='".$record['target']."'");
}我希望为'while‘循环的每一次迭代都附加到$result2上,这样我就可以在$result2中获得一个完整的列表,以便以后可以处理。我如何才能完成这项任务?
谢谢,戴夫
发布于 2013-02-21 04:26:21
为什么不使用IN方法,而是运行未知数量的查询,这确实会减慢应用程序的运行速度?然后在一个查询中得到所有结果。像这样:
$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中的所有产品;
更多信息
发布于 2013-02-21 04:23:02
我相信这就是你要找的。
<?
$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...循环。
不过要小心。这可能会无限循环(直到达到内存使用限制)。
Edit:更好的查询方法-使用IN。
https://stackoverflow.com/questions/14988537
复制相似问题