[英]Fetching rows from mysql several times embeded with php
我正在處理2個表。我只想知道是否有一些代碼可以幫助我多次讀取行而無需多次編寫相同的查詢:示例:
while($row1=mysqli_fetch_array($result1)) {
while($row2=mysqli_fetch_array($result2)){
//checking for some condition
}
}
在上面的代碼中,與數組不同,我們無法按如下所示在內部循環外部重置變量
while($row1=mysqli_fetch_array($result1)) {
$number=0;//so that v can start from first row
while($row2=mysqli_fetch_array($result2)){
//checking for some condition
}
}
我完全知道行和數組是不同的,所以我問是否可以在行上使用FOR循環? 喜歡:
while($row1=mysqli_fetch_array($result1)) {
for(...){
//so dat it will xecute no.of whileloops*no.of for loops.
}
}
如果不清楚,請問更多。 您的建議非常重要。
編輯:表:年1999 2000 2002 2004 2000 $ result = mysqli_query($ con,“從表名中選擇不同的年”); 數據集= mysqli_fetch_array($結果)..
如果我做對了,您想將第一個查詢的所有結果與第二個查詢的所有結果進行匹配。
在這種情況下,您應該首先在兩個PHP數組(數組)中收集兩個查詢的所有結果,然后使用這些變量,如下所示:
$list1=array();
while ($row=mysqli_fetch_array($result1)) $list1[] = $row;
$list2=array();
while ($row=mysqli_fetch_array($result2)) $list2[] = $row;
foreach ($list1 as $row1)
foreach ($list2 as $row2)
{
match_against ($row1, $row2);
}
注意,它看起來非常像用PHP完成的SQL JOIN。
為什么不這樣做,只要結果數保持在合理范圍之內。
但是,如果不是這種情況(即$ list1或$ list2可以包含數百個元素),請注意您的代碼很可能會比數據庫引擎的效率低很多。
這就是為什么您可能要考慮用SQL查詢替換此代碼的原因。
$dataSet1 = mysqli_fetch_all($result1);
$dataSet2 = mysqli_fetch_all($result2);
foreach($dataSet1 AS $row1){
foreach($dataSet2 AS $row2){
}
}
這樣的事情可能行得通嗎?
試試這個(如果我理解):
while( list($row1,$row2) = array(mysqli_fetch_array($result1),mysqli_fetch_array($result2)) ){
// check condition
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.