数据库(书表)
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 ?
答案 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 />';
}