準備されたステートメントとテーブル名: よくある落とし穴
準備されたステートメントを使用してテーブル名を動的に指定すると、「テーブル名が必要な場所にパラメータ 'Pa_RaM000' が指定されました」のようなエラーが発生することがよくあります。このエラーは、準備されたステートメントのパラメーターは SQL クエリ内でテーブル名を直接置換できないという重大な制限を浮き彫りにします。
解決策は、テーブル名 (ハードコーディングする必要があります) とパラメーター化された値を連結して SQL クエリ文字列を構築することです。 次の修正された例を考えてみましょう:
<code class="language-sql">private String query1 = "SELECT plantID, edrman, plant, vaxnode FROM [" + reportDate + "?]"; </code>
ここでは、reportDate
(パラメーター) が固定のテーブル名の接頭辞と連結されています。これにより、クエリがターゲット テーブルを正しく識別できるようになります。 テーブル名をパラメータで直接置換することは、準備されたステートメントを使用するデータベース システムではサポートされていないことに注意してください。
以上がプリペアドステートメントでテーブル名のパラメータを使用するとエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。