这是我的查询。我试图从MySql结果
返回多个值function getName()
{
$field_id=$_REQUEST['field_id'];
for($i=0;$i<$_REQUEST['countLoc'];$i++)
{
$val=$_REQUEST['val_check'.trim($i)];
$sql="UPDATE customer SET sub_ID=$field_id WHERE ff_custID='$val'";
$rs=parent::_executeQuery($sql);
$rs = parent::getAll($rs);
$sql2="SELECT * FROM customer WHERE sub_ID='$field_id' AND ff_custID='$val'";
$rs2=parent::_executeQuery($sql2);
$rs2=parent::getAll($rs2);
$name = $rs2[0]['name'];
echo $name;
}
return $name;
}
因此echo $name
将显示从结果中提取的多个名称。当我return $name
返回单个结果时。
假设是
$name = $rs2[0]['name']; is showing 'David' and 'Mark' inside the loop,
the returned value i am getting is only `David`
如何返回循环中获取的所有结果
答案 0 :(得分:2)
我相信,
$name = $rs2[0]['name'];
应该是
$name .= $rs2[$i]['name'];
如果你想最后一次返回所有的名字,你可能想要连接它们。
答案 1 :(得分:2)
你的$ name在每次迭代中只存储name的当前值,因为每次迭代都会替换前一个,所以当你返回时,只返回最后一个实例。 所以尝试这样的事情: 在for for set之前
$name =''
在关闭大括号
之前的for循环中$name .= ' ' . $rs2[i]['name'];
和for循环
之后return $name
然而,使用数组
是个好主意答案 2 :(得分:2)
您应该将$name
变量转换为数组。
通过这种方式,您可以在每个循环周期将从MySQL读取的新名称推送到数组,并返回包含所有值的完整数组。
您应该在for循环之前定义$name
:
$name = array();
在循环中,将$name
赋值替换为:
array_push($name, $rs2[$i]['name']);
在从记录集中检索名称时,请注意用$ i计数器替换索引0。
答案 3 :(得分:1)
使用for for循环$name = $rs2[0]['name'];
将代码更改为$name = $rs2[$i]['name'];
因为,在您的代码视点索引中始终返回
0th value
。最好将索引值设为
i
for($i=0;$i<$_REQUEST['countLoc'];$i++) {
$val=$_REQUEST['val_check'.trim($i)];
$sql="UPDATE customer SET sub_ID=$field_id WHERE ff_custID='$val'";
$rs=parent::_executeQuery($sql);
$rs = parent::getAll($rs);
$sql2="SELECT * FROM customer WHERE sub_ID='$field_id' AND ff_custID='$val'";
$rs2=parent::_executeQuery($sql2);
$rs2=parent::getAll($rs2);
$name = $rs2[$i]['name'];
^ Index value here
echo $name;
}