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

PHP PDO:bindValue()と予約キーワードを処理する方法は?

    SQL文字列(prepare_update_stringだと思います)を作成するとき、およびデータをバインドする両方のforeachループで、増分カウントを実行してバインド値に追加します。したがって、「:status」は「:status1」になります。

    次のようなもの:

    $i = 1;
    foreach ($data as $k => $v) {
        $this->_sth->bindValue(":{$k.$i}", $v);
        $i++;
    }
    

    これにより、予約されたキーワードの問題が解決されます。

    また、同じプレースホルダーに複数回バインドする必要があるという問題(将来発生すると確信しています)も解決します。

    例えば次の代わりに、:statusプレースホルダーの2つのバインドが原因でエラーがスローされます

    SELECT * from table WHERE `status` = :status AND `otherfield` = :status
    

    カウントを増やすと、これは次のようになります。

    SELECT * from table WHERE `status` = :status1 AND `otherfield` = :status2
    

    お楽しみください。



    1. 1-3,5,10-15,20のような式に数字が含まれているかどうかを検索します

    2. ワイルドカードを使用したスクラブルワードファインダー

    3. PHPでバイナリファイルをダウンロードできません

    4. IDataReader.Readではyieldreturnは機能しませんが、リーダーのforeachは機能します