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

mysqlPDOLIKEをバインドする方法

    次のように言うこともできます:

    SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')
    

    MySQLの最後で文字列結合を行うためであり、この場合に特別な理由があるわけではありません。

    部分的なwrdの場合、状況は少し複雑になります 探しているもの自体に、パーセント文字またはアンダースコア文字(LIKE演算子に対して特別な意味があるため)またはバックスラッシュ(MySQLがLIKE演算子のエスケープの別のレイヤーとして使用します— ANSI SQL標準によると誤って)を含めることができます。

    うまくいけば、それはあなたに影響を与えませんが、あなたがそのケースを正しくする必要があるならば、ここに厄介な解決策があります:

    $stmt= $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :term ESCAPE '+'");
    $escaped= str_replace(array('+', '%', '_'), array('++', '+%', '+_'), $var);
    $stmt->bindParam(':term', $escaped);
    


    1. UPDLOCK、HOLDLOCKについて混乱している

    2. MySQLの`REPLACE`と`INSERT... ON DUPLICATE KEY UPDATE`の実際的な違いは何ですか?

    3. SQLServer未使用インデックス

    4. このCLOBフィールドのGetOrdinal関数でOutOfRange例外が発生するのはなぜですか?