在mysql php中,For Loop不能与Array一起工作。

问题描述 投票:0回答:2

我想把一个数组中的值传递给一个变量

$coode = '111,222,333';

$rollnum = explode(",", $coode);
for($x = 0; $x < count($rollnum); $x++){
  $products = $db->query("SELECT name FROM studentstb WHERE roll_no=".$rollnum[$x]."");
                       while($row = $products->fetch_assoc()){
                          $stdname =$row['name'];
                       }

}
echo($stdname);

我想把结果显示为tolu,tulu,talai,我想把这些值放到一个变量中,然后爆炸,检查数据库来检索它们的名字,然后显示它们。

php html mysql arrays for-loop
2个回答
0
投票

我看到两个问题,第一个问题是 N + 1 查询,第二个是行 $stdname = $row['name'];

解决办法

$codes = '1,2,3';

$sql = "SELECT name FROM users WHERE id IN ({$codes})";
$result = $mysqli -> query($sql);
$namesArr = $result->fetch_all(MYSQLI_ASSOC);

$updatedNamesArr = array_map(function ($name){
    return $name['name'];
}, $namesArr);

var_dump(implode(',', $updatedNamesArr));

产量

"Dmitry,Raf,Api"

0
投票

该方法 fetch_assoc() 不应该为您的PDOStatement对象定义。$products 如果你正在使用PDO驱动,但它是为MySQLi定义的。

请检查 PDOStatement方法列表 此处 那些为MySQLi 这里。

另一方面,你的变量 $stdname 应该是一个数组,在这里你从查询中添加你的三个值.然后你应该调整你的while循环内容,像这样。

while($row = $products->fetch()){
//get the names in an array
$stdname[$x] = $row['name'];
}

最后,在你方便的时候做一个循环来显示这些名字。


0
投票

现在工作了,我忽略了查询中的一个引号。

 $rollnum = explode(',', $coode);
  for($x = 0; $x < count($rollnum); $x++){
    $products = $db->query("SELECT name FROM studentstb WHERE roll_no='".$rollnum[$x]."'");
    while($row = $products->fetch_assoc()){
     $stdname[$x] =$row['name'];
    }

}

然后我用

foreach ($stdname as $a){
        echo $a;
© www.soinside.com 2019 - 2024. All rights reserved.