1

次のコードを実行すると:

$_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 オブジェクト ( [name] => Status [orgname] => Status [table] => UserCompletion [orgtable] => UserCompletion [def] => [db] => SLMS [catalog] => def [max_length] => 0 [length] => 1 [charsetnr] => 63 [flags] => 36865 [type] => 3 [decimals] => 0 ) )

実行が配置されるまで、私の他のクエリは失敗しません。これはわかっています。constants.php に対するクエリがないと、ユーザーがアクセスするすべてのページがブロックされるからです。

4

1 に答える 1

0

MySQLi execute() マニュアルから;

ノート:

mysqli_stmt_execute() を使用する場合、追加のクエリを実行する前に、mysqli_stmt_fetch() 関数を使用してデータをフェッチする必要があります。

含まれているコードはそれを行っておらず、メタデータを取得しているだけなので、クエリは結果セットまたはカーソルを開いたままにしている可能性が高く、2 番目のステートメントが失敗します。

于 2013-01-14T13:58:55.823 に答える