2017-05-08 51 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

不客气! –