比如
$db->query("SET NAMES UTF8");
if($db->real_query("call sp_test()")){
do{
echo 'bp';
if($result = $db->store_result()){
while ($row = $result->fetch_assoc()){
array_push($rows, $row);
}
$result->close();
}
}while($db->next_result());
}
$db->close(); 你会发现假设你返回1个结果集,会打出2个bp,2个结果集就会echo出3个bp,但如果不写存储,直接写语句,就正常,不会多出一个,求大神指点迷津!
$db->query("SET NAMES UTF8");
if($db->real_query("call sp_test()")){
do{
echo 'bp';
if($result = $db->store_result()){
while ($row = $result->fetch_assoc()){
array_push($rows, $row);
}
$result->close();
}
}while($db->next_result());
}
$db->close(); 你会发现假设你返回1个结果集,会打出2个bp,2个结果集就会echo出3个bp,但如果不写存储,直接写语句,就正常,不会多出一个,求大神指点迷津!
您好,可是直接写语句在php里不会多出一个,比如select 1;select 2;他就打出2个bp,这是为什么呢,存储过程里也写以上2句就会打出3个
do{
if($result = $db->store_result()){
}
}while($db->next_result());
这样的代码结构是读取存储过程结果集必须的,如果你认为是 bug,可以去 php bug 网站去投诉。
不过在没有改正之前,你还是必须这么做
$i = 1;
$max = 2;
while(true) {
echo "A"; // 这里肯定会输出3个A
if($i > $max) {
break;
}
$i++;
}
大侠,不好意思,我还想问下,$result = $db->store_result(),这句话到底是什么意思,这是赋值运算,怎么就能返回bool值呢?
当没有了的时候,返回的就是空了(null)
那$result =null 这个返回的是false吗?