我正在使用全局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
答案 0 :(得分:3)
"关于$ mysql的关闭是正确的,我盯着它看了很久但仍然把它读作$ stmt-> close()。我在阅读理解自己的代码时失败了。 - 哥伦布"
正如我在第一次评论中所述;您在代码中过早关闭了连接。
因此,要么删除$mysqli->close();
,因为MySQL会自动关闭它,或者在最后一次函数调用之后放置它。
echo getProgramInfo($mysqli); //This fails if I call the function here
$mysqli->close();