阻止下一个查询运行的初始 mysqli 查询


Initial mysqli query preventing the next from running

我正在使用全局mysqli对象运行查询,然后将mysqli对象传递给名为getProgramInfo的函数,以便在运行第二个查询时使用。如果我不运行初始查询,一切正常,但是如果我运行初始查询,第二个查询不起作用,并且在 $mysqli->prepare() 上失败。SQL 在第二个查询上有效,似乎只是 mysqli 对象存在问题。

echo getProgramInfo($mysqli); //This works if I call this function here.
$sql = "SELECT programName FROM programs WHERE programID = ?";
if ($stmt = $mysqli->prepare($sql)) //This query always works
{
  $stmt->bind_param('i', $_GET['id']);
  $stmt->execute();
  $stmt->bind_result($programNameText);
  if ($stmt->fetch()) 
  { 
    //Do stuff;
  }
  else
  {
     echo "Error";
  }
  $mysqli->close();
}
echo getProgramInfo($mysqli); //This fails if I call the function here

"你在$mysql结束时是对的,我盯着它看了这么久,但一直把它读成$stmt->close()。我未能阅读对自己代码的理解。——哥伦布"

正如我的第一条评论中所述;您在代码中过早关闭了连接。

因此,要么删除$mysqli->close();,因为MySQL会自动关闭它,要么将其放在最后一次函数调用之后。

echo getProgramInfo($mysqli); //This fails if I call the function here
$mysqli->close();