Php MySQLi致命错误

Php MySQLi致命错误,php,mysqli,Php,Mysqli,我有index.php页面,在标题标签中我有如下内容: <title><?php echo getBasic('title'); ?></title> 而且它工作得很好 顺便说一句,这起了作用,正确地显示了标题,然后由于未知的原因停止了工作。我不明白它是如何与getBasic(“public”)一起工作的,但与标题无关。我在数据库中有一个类型为“title”的记录,所以这不是问题 提前感谢。出现这种错误是因为您在使用返回值之前没有检查它们 在这种情况下,发

我有index.php页面,在标题标签中我有如下内容:

<title><?php echo getBasic('title'); ?></title>
而且它工作得很好


顺便说一句,这起了作用,正确地显示了标题,然后由于未知的原因停止了工作。我不明白它是如何与getBasic(“public”)一起工作的,但与标题无关。我在数据库中有一个类型为“title”的记录,所以这不是问题


提前感谢。

出现这种错误是因为您在使用返回值之前没有检查它们

在这种情况下,发生错误的原因是
$db->prepare($sql)
失败,返回
false
,然后将其当作语句(stmt)对象使用

在使用返回值之前,请检查它们:

$stmt = $db->prepare($sql);
if ($stmt === false) {
    die('Preparing SQL string failed');
}

出现错误的一个原因是,prepare()正在失败-

if the sql statement sent to it is not valid in the current DB. 
prepare() will then return false.

例如-如果表名不正确或查询中不存在一个或多个字段。

$stmt
不是对象,可能是布尔值
false
,因为
准备()失败。
。用
echo$db->错误调试它
。如果它在早期工作,然后退出,很可能是因为
$db
不再是您所期望的,或者所选数据库已更改。@MichaelBerkowski我知道它返回false,但我不知道为什么。。。我做了var_转储,它对所有内容都返回null。对
$db
返回
null
?然后,您在逻辑的前面某个地方丢失了
$db
。它是一个全局文件,所以可能在某个地方被覆盖或取消设置。错误不在此代码中。@MichaelBerkowski您是对的。因为它是全局的,所以在另一行中被覆盖。所有内容都存在,并且名称正确。我的意思是,它是为“公众”而不是为“标题”工作的,而且两个记录都在数据库中。我没动数据库,只是代码。我照你说的做了,上面说准备失败了,但我仍然不知道为什么。该函数一切正常,因为它与“public”一起工作。
$stmt = $db->prepare($sql);
if ($stmt === false) {
    die('Preparing SQL string failed');
}
if the sql statement sent to it is not valid in the current DB. 
prepare() will then return false.