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中使用数组的主要内容,如果未能解决你的问题,请参考以下文章