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