ホームページ >データベース >mysql チュートリアル >PDO パラメータ バインド エラー: \'SQLSTATE[HY000]: 一般エラー: 2031\' を解決する方法
PDO パラメーター バインディング エラー: SQLSTATE[HY000]: 一般エラー 2031
PHP の PDO ライブラリを利用すると、イライラするエラーが発生することがあります。 PDO エラー: SQLSTATE[HY000]: 一般エラー: 2031。」このエラーは、パラメータ バインディングに関する問題を示しています。
このエラーの考えられる原因の 1 つは、複数の値を 1 つのパラメータ名にバインドしていることです。次の例を考えてみましょう。
<code class="php">if ($limit) { $sth->bindValue(':page', $page - 1, PDO::PARAM_INT); $sth->bindValue(':entries_per_page', $page * $entries_per_page, PDO::PARAM_INT); }</code>
このコードでは、bindValue() メソッドを使用して 2 つの値を ':page' パラメータに手動でバインドします。 LIMIT 句でプレースホルダー (:placeholder) を直接使用しようとすると、PDO エンジンがプレースホルダー (:placeholder) を文字列に変換するため、これが必要です。
ただし、複数の値を同じパラメーター名にバインドするのは間違っており、次のような結果になります。 「SQLSTATE[HY000]: 一般エラー: 2031」エラー。
解決策:
このエラーを解決するには、各パラメーター名がバインドに 1 回だけ使用されるようにしてください。 。この例では、「:page」値と「:entries_per_page」値に個別のパラメータを宣言する必要があります。例:
<code class="php">if ($limit) { $sth->bindValue(':page', $page - 1, PDO::PARAM_INT); $sth->bindValue(':limit', $page * $entries_per_page, PDO::PARAM_INT); }</code>
注意:
バインドした場合にもエラー「SQLSTATE[HY000]: 一般エラー: 2031」が発生する可能性があることに注意することが重要です。 LIMIT 句と無関係であっても、コード内の他の場所で同じパラメータ名に複数の値を指定します。したがって、パラメーター バインディングを常に再確認して、各名前が 1 回だけ使用されていることを確認してください。
以上がPDO パラメータ バインド エラー: \'SQLSTATE[HY000]: 一般エラー: 2031\' を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。