Php $rows在尝试第二次查询后返回null
我试图从数据库中填充两个下拉列表,所以我尝试进行一个查询并填充第一个下拉列表,然后尝试进行第二个查询并填充最后一个下拉列表 它将第二个$rows返回为false,但第一个是ok,我做错了什么Php $rows在尝试第二次查询后返回null,php,mysql,Php,Mysql,我试图从数据库中填充两个下拉列表,所以我尝试进行一个查询并填充第一个下拉列表,然后尝试进行第二个查询并填充最后一个下拉列表 它将第二个$rows返回为false,但第一个是ok,我做错了什么 <?php $db = new Db(); $rows = $db -> select("call Store1(0,0);"); var_dump($rows); $rows = $db -> select("call Store1(0,0);");
<?php
$db = new Db();
$rows = $db -> select("call Store1(0,0);");
var_dump($rows);
$rows = $db -> select("call Store1(0,0);");
var_dump($rows);
?>
我的猜测(这只是一个猜测…)
第一个结果集(光标)仍处于打开状态。光标尚未关闭。(Myabe当前结果集中还有更多尚未提取的行。或者尚未通过发出关闭命令放弃
尝试准备(执行)第二条语句(在同一数据库连接上)会导致错误
(阿吉安,这只是猜测,决不是对问题的实际诊断。)
我建议我们启用错误报告。如果SQL语句执行返回false,那么我们需要从数据库中检索错误代码和错误消息。或者考虑启用PDO异常,这样就可以抛出错误,这样我们就可以看到它们了。(类似的可能是使用MySQLi。)
FALSE的返回告诉我们发生了错误,但它没有告诉我们错误是什么(如果没有它,就很难知道要修复什么) 在某些情况下,可能是我们不在乎错误是什么。在这种情况下,很明显我们在乎。我们的工作是找出错误是什么……在不诊断错误的根本原因的情况下,任何试图开处方的行为都将是“尝试这个”和“尝试那个”在黑暗中不瞄准射击,希望击中某物建议阅读:
在任何人能够以有意义的方式帮助您之前,您需要提供以下内容。两个存储过程的定义(至少第二个),SPs从中提取的相关模式/示例数据,预期结果,实际/当前结果,以及您收到的任何错误。我不敢相信这里有投票权取消删除OP的问题,并标记为“非答案”并删除。现在这太有趣和令人困惑了。民主伙伴。
public function select($query) {
$rows = array();
$result = $this -> query($query);
if($result === false)
{
return false;
}
while ($row = $result -> fetch_assoc())
{
$rows[] = $row;
}
return $rows;
}
public function query($query) {
$connection = $this -> connect();
$result = $connection -> query($query);
return $result;
}