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

PHP PDOは疑問符をエスケープするため、プレースホルダーとは見なされません

    PDOは、引用符内の疑問符と混同されません。これをPHP5.5.15でテストします。

    $sql = "SELECT CONCAT('path/to/page/?id=', id) AS link FROM foo WHERE name = ?;";
    $stmt = $pdo->prepare($sql);
    $stmt->bindValue(1, 'name');
    $stmt->execute();
    print_r($stmt->fetchAll());
    

    パラメータの数が間違っていてもエラーは発生せず、正常に動作します。エラーの原因は、SQL構文ではなく、パラメーターのバインド方法です。

    FROMなしのWHEREはとにかく構文エラーであるため、SQLクエリ全体を表示していないと思われます。したがって、表示していない追加のパラメータプレースホルダーが必要です。パラメータをバインドする方法(またはexecute()にパラメータを渡す方法)を示しておくと便利です。



    1. CentOS7またはRHEL7からMariaDBまたはMySQLを完全に削除します

    2. SQLでIFステートメントを実行する方法は?

    3. sqlplus列の出力長を増やす方法は?

    4. postgresqlとcodeigniterを接続する