从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的数组,但只存储了一个元素。你知道为什么吗?
答案 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];
}