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

时间:2016-02-25 19:22:41

标签: php mysqli

我正在使用全局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

1 个答案:

答案 0 :(得分:3)

  

"关于$ mysql的关闭是正确的,我盯着它看了很久但仍然把它读作$ stmt-> close()。我在阅读理解自己的代码时失败了。 - 哥伦布"

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

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

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