无法返回多个MySql结果

时间:2014-12-23 06:28:58

标签: php mysql

这是我的查询。我试图从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`

如何返回循环中获取的所有结果

4 个答案:

答案 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;
}