【发布时间】:2026-01-30 13:55:01
【问题描述】:
当我运行以下代码时:
$_1= $Var->prepare("SELECT Status FROM UserCompletion WHERE `UserID`=?");
$_1->bind_param('i', $_SESSION['UID']);
$_1->execute();
$metaResults = $_1->result_metadata();
$fields = $metaResults->fetch_fields();
我得到这个错误:
致命错误:在第 17 行的 /var/www/CMS/API/Constants.php 中的非对象上调用成员函数 fetch_row()
这个查询与我正在处理的页面在不同的页面上。这个查询是:
$PathLocation = $STD->query("SELECT PathLocation From SiteVariables");
$FilePath = $PathLocation->fetch_row();
当我注释掉 execute(); 时,它会停止返回该错误;为什么我的执行导致另一个页面崩溃?
更新
execute(); 查询没有失败。
$_1 = $STD->prepare("SELECT Status FROM UserCompletion WHERE `UserID`=?");
$_1->bind_param('i', $_SESSION['UID']);
$_1->execute();
$metaResults = $_1->result_metadata();
$fields = $metaResults->fetch_fields();
#$GetCompletedArray = $GetCompletedResults->fetch_array(MYSQLI_ASSOC);
print_r($fields);
返回:
( [0] => stdClass Object ( [name] => Status [orgname] => Status [table] => UserCompletion [orgtable] => UserCompletion [def] => [db] => SLMS [目录] => def [max_length] => 0 [length] => 1 [charsetnr] => 63 [flags] => 36865 [type] => 3 [decimals] => 0 ) )
在执行到位之前,我的其他查询不会失败。我知道这一点,因为如果没有对 constants.php 的查询,用户访问的每个页面都会被阻止。
【问题讨论】:
-
该 contants.php 文件是否可能用作包含,并且执行您的新查询会导致某些变量被覆盖,这是以后需要的?
-
@Oldskool 为什么在 OP 使用 MySQLI API 时将其重新标记为 PDO?
-
@AshleySheridan 是的,constants.php 是一个包含文件,查询成功,没有变量被覆盖
-
@DarylGill 你是对的,我看错了。回滚了,谢谢指出。
-
也许查询失败了?如果查询失败,mysqli_query 返回 false。您根本不测试这种情况 - 您是否尝试过查看 MySQL 在运行查询时是否输出任何错误信息?