2017-05-08 147 views
-1

PHP還是新的。我想使用存儲在數組中的ID顯示數據庫中的幾行。實際上它只顯示第一行(ID = 2),我正在尋找顯示所有這些(4行)的方法。PHP顯示行

$i=0; 
if($sql1= mysqli_query($conn, "SELECT * FROM table")) 
{ 
    $arr = array(2,3,5,7); 
    $sql2= mysqli_query($conn, "SELECT * FROM table WHERE id='".$arr[$i]."'"); 
    while($row1 = mysqli_fetch_assoc($sql2)) 
    { 
    echo $row1['id']; 
    echo $row1['content']; //display some rows 
    $i=$i+1; 
    } 
} 

任何人都知道如何做到這一點?

+0

看起來你到目前爲止確實行得通 - 這有什麼問題? –

+0

你需要規範你的分貝;有點像你有逗號分隔值的聲音。如果不是,則使用'IN()'或'FIND_IN_SET()'。問題不清楚數據庫中的值是什麼。作爲@JayBlanchard說的 –

+0

;什麼似乎是問題?或者你是否留下了這個問題,或者不打算要求澄清的意見? –

回答

3

你的代碼中的問題是你使用了一個數組,但從來沒有遍歷元素。此外,而不是執行查詢多次,你可以得到一個單一的查詢結果:

$i=0; 
if($sql1= mysqli_query($conn, "SELECT * FROM table")) 
{ 
    $arr = array(2,3,5,7); 
    $ids = implode(',',$arr); 
    $sql2= mysqli_query($conn, "SELECT * FROM table WHERE id in (".$ids.")"); 
    while($row1 = mysqli_fetch_assoc($sql2)) { 
     echo $row1['id']; 
     echo $row1['content']; //display some rows 
     $i=$i+1; 
    } 
} 

如果你實際上是通過陣列需要循環,你能做到這一點是這樣的:

if($sql1= mysqli_query($conn, "SELECT * FROM table")) 
{ 
    $arr = array(2,3,5,7); 
    for($i = 0; $i < sizeOf($arr);$i++) { 
     $sql2= mysqli_query($conn, "SELECT * FROM table WHERE id='".$arr[$i]."'"); 
     while($row1 = mysqli_fetch_assoc($sql2)) { 
      echo $row1['id']; 
      echo $row1['content']; //display some rows 
     } 
    } 
} 
+0

作品!感謝您的新知識! –

+0

不客氣! –