$rows在尝试第二次php查询后返回null

zu0ti5jz  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(312)

我尝试从数据库中填充两个下拉列表,所以我尝试进行一个查询并填充第一个下拉列表,然后尝试进行第二个查询并填充最后一个下拉列表。
它将第二个$rows返回为false,但第一个是ok,我做错了什么?

<?php 
  $db = new Db();     
  $rows = $db -> select("call Store1(0,0);");
  var_dump($rows);  
  $rows = $db -> select("call Store1(0,0);");           
  var_dump($rows);
?>

以下是我的两个功能:

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; 
}
0sgqnhkj

0sgqnhkj1#

我的猜测(这只是猜测…)
第一个结果集(游标)仍处于打开状态。光标尚未关闭(myabe当前结果集中还有更多尚未提取的行。或者没有通过发布收盘价被放弃。
尝试准备(执行)第二条语句(在同一个数据库连接上)会导致错误。
(阿娇,这只是猜测,绝不是对问题的实际诊断。)
我的建议是启用错误报告。如果sql语句执行返回false,那么我们需要从数据库中检索错误代码和错误消息。或者考虑启用pdo异常,以便抛出错误以便我们可以看到它们(使用mysqli可能也有类似的功能。)
返回false是告诉我们发生了错误,但它没有告诉我们错误是什么(如果没有这些,就很难知道要解决什么问题。)
在某些情况下,可能是我们不关心错误是什么。在这种情况下,很明显我们很在乎。我们的工作是找出错误所在。。。没有诊断出错误的根本原因,任何试图开处方的行为都将是“试试这个”和“试试那个”在黑暗中不瞄准射击,希望击中什么东西。
推荐阅读:
https://ericlippert.com/2014/03/05/how-to-debug-small-programs/

相关问题