sql >> データベース >  >> RDS >> Mysql

PDO:MySQL関数をbindValue/bindParamに渡します

    いいえ。クエリパラメータは、単一の定数値のみを置き換えます。たとえば、数値定数またはリテラル文字列または日付。

    その他(列名、テーブル名、SQLキーワード、関数、式)は、解析時にSQL文字列に含まれている必要があります。

    コメントを再確認してください:

    パラメータはではないことを理解する必要があります SQLに余分な文字列を挿入するのに便利です。 PREPAREはJavaまたはC#のコンパイルフェーズに類似していますが、EXECUTEはコンパイルされたコードの実行に類似しています。

    準備時間は、RDBMSが構文チェックと参照の検証を行うときです。存在しないテーブルに名前を付けるか、存在しない関数を呼び出すと、エラーが発生する必要があります。

    テーブル名や関数呼び出しをパラメーターとして渡すことはできません。これは、RDBMSが準備時にこれらの参照を検証できないためです。クエリパラメータを使用してステートメントの構文を変更したり、無効なテーブルや関数を導入したりすることはできません。

    したがって、パラメータプレースホルダーは、無効な参照になることのない還元不可能な構文要素である必要があります。つまり、単一のリテラル値(数値または文字列)である必要があります。



    1. Mysqlで人間の日付をUNIXタイムスタンプに変換する方法は?

    2. Sphinx 2.0.4 MAMP 2.0でのインストールエラー:MySQLヘッダーが見つかりません

    3. Oracle FORLOOPREVERSEの例

    4. ネイティブメソッドのUnsatisfiedLinkError