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