Php收到截断的mysql结果

时间:2015-05-18 10:36:43

标签: php mysql arrays

从php运行mysql查询时遇到一个奇怪的问题 我有一个包含许多(23)表的mysql数据库;其中两个是Users和FollowersList FollowersList包含两个列:第一个是用户的代码,第二个是第一个用户的代码;每列引用Users表的主索引。

我已经定义了一个名为“getFollowings”的存储过程,它返回有人关注的用户的代码;它以这种方式定义:

CREATE PROCEDURE getFollowings(IN cod INT(11))    
BEGIN    
SELECT Code2 FROM FollowersList WHERE Code1=cod;    
END



当我从phpmyadmin调用存储过程时,一切正常;我得到了所有正确的结果。
当我从php调用它时,使用以下代码:

$sql0="CALL getFollowings('".$cod."')";
$res0=mysqli_query($con, $sql0);
$array0=mysqli_fetch_array($res0);
mysqli_next_result($con);

我无法得到正确的结果。正确定义连接,并正确定义所有变量。

让我们举个例子。我正在使用代码94处理用户;当我从phpmyadmin运行程序时,我得到两个结果:63和89,这在我的数据库中是正确的 如果我从PHP脚本尝试相同的,我得到一个维度2的数组,但只有第一个值; var_dump是:

array(2){[0] => string(2)“63”[“Code2”] => string(2)“63”}

这意味着我收到size = 2的数组,但只存储了一个元素。你知道为什么吗?

1 个答案:

答案 0 :(得分:3)

您没有迭代mysqli_fetch_array。 像这样使用

while($row = mysqli_fetch_array($res0)){
$array0[] = $row;
}

print_r($array0);

你正在使用mysqli_fetch_array,它给出了关联数组和数值数组。

如果你想要关联数组使用

mysqli_fetch_array($res0,MYSQLI_ASSOC);

如果您想使用数字数组

mysqli_fetch_array($res0,MYSQLI_NUM);

默认返回

像这样使用

while($row = mysqli_fetch_array($res0)){
$array0[] = $row;
}

echo count($array0);

foreach($array0 as $value){
   echo $value[0];
}