For循环不能在mysql php中使用数组

Posted

技术标签:

【中文标题】For循环不能在mysql php中使用数组【英文标题】:For Loop not working with Array in mysql php 【发布时间】:2020-08-07 04:54:12 【问题描述】:

我正在尝试将值从数组传递到变量中

$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,tala 我想将这些值放入一个变量中,分解它,检查数据库以检索它们的名称,然后显示它们。

【问题讨论】:

您遇到的错误是什么?您的代码只会显示姓氏,这是您的意图吗? 如果是您在其他帖子中输入的“布尔”错误消息,则表明查询无效。在 phpMyAdmin 或同等工具中测试您的查询,看看有什么问题。 不,我希望结果显示为 tolu,tulu,tala 那么你需要将每个结果连接到$stdname,而不是覆盖它。或者将$stdname 设为一个数组并添加到其中然后显示它。或者在循环中显示每个名称,而不是在末尾。查询现在有效吗? 还是不行 【参考方案1】:

我看到两个问题,第一个是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"

【讨论】:

n+1查询问题与ORM有关,您的情况不会出现,请忽略。【参考方案2】:

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

在此处查看PDOStatement methods list,在此处查看those for MySQLi。

另一方面,您的变量 $stdname 应该是一个数组,您可以在其中添加来自查询的三个值。 然后,您应该像这样调整您的 while 循环内容:

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

最后,创建一个循环以在您方便的时候显示名称。

【讨论】:

【参考方案3】:

现在工作, 我忽略了查询中的单引号

 $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;

【讨论】:

你也没有使用 $stdname 作为箭头。 $stdname 用作变量以显示从数据库中获取的值。

以上是关于For循环不能在mysql php中使用数组的主要内容,如果未能解决你的问题,请参考以下文章

php-在for循环中查找下一个数组值

如何使用for循环在mpdf PHP中打印数组中的值

php循环创建数组

PHP数组循环?

为啥我不能在对象数组的 for-in 循环中访问对象属性? [复制]

PHP 如何循环输出数组 并且调用