PHP数组mysql检索每条记录

时间:2015-01-13 05:08:00

标签: php mysql sql arrays

  • 数据库(书表)
    serialID价格
    0001 10.00
    0001 30.00
    0002 15.00
    0003(A)9.00
    0004(B)5.00
    0005 3.00

  • 代码

    $serialID = array("0001","0002","0003","0004","0005");
    
    //DB Connection
    for($i = 0; $i < count($serialID); $i++)
    {
        $q = "select serial from book where serial like \"$serialID[$i]\" limit 1";
        $r = mysqli_query($dbc, $q);
    }
    
    while($row = mysqli_fetch_array($r, MYSQLI_ASSOC)
    {
        echo $row['serial'].'<br />';
    } 
    
  • 从我的代码中,我只能获取最后一个serialID。如何检索$row中的每个 serialID

5 个答案:

答案 0 :(得分:1)

您可以改用:

$q = "select serial from book where serial like '%"
   . implode($serialID, "%' OR serial LIKE '%") . "%'";
$r = mysqli_query($dbc, $q);

while($row = mysqli_fetch_array($r, MYSQLI_ASSOC)
   echo $row['serial'].'<br />';

for循环中,SELECT所有行,但只有最后一个实例保存在变量中(在for循环的最后一次迭代中),所以你获取只在while循环中。

P.S。您也可以将while循环放在for循环的末尾,但上面的代码并不那么麻烦。

答案 1 :(得分:0)

编辑:在查询之前,你总是覆盖for循环中的select语句。因此,只执行最后一个序列的最后一个查询

答案 2 :(得分:0)

我希望你犯了一个错误,在查询中你保持限制1,这就是你获得最后记录的原因

for($i = 0; $i < count($serialID); $i++)
{
$sql=select serial from book where serial like \"$serialID[$i]\"
$r = mysqli_query($sql);
}

 while($row = mysqli_fetch_array($r)
 {
 echo $row['serial'].'<br />';
  } 

答案 3 :(得分:0)

$serialID = array("0001","0002","0003","0004","0005");

//DB Connection
foreach($serialID as $serial){
    $q = "select serial from book where serial like '%".$serial."%' limit 1";
    $r = mysqli_query($dbc, $q);
    while($row = mysqli_fetch_array($r, MYSQLI_ASSOC)
        echo $row['serial'].'<br/>';
}

答案 4 :(得分:0)

 for($i = 0; $i < count($serialID); $i++)
{
$r = mysqli_query($sql);
$sql=select serial from book where serial like "$serialID[$i]"
}

 while($row = mysqli_fetch_array($r)
 {
 echo $row['serial'].'<br />';
  }