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

ストアドプロシージャを使用したphpでのpdoの使用

    bindValue を使用する必要があります bindParam の代わりに 。

    bindParamを使用すると、変数の値ではなく、パラメーターに指定された変数がバインドされます。

    したがって、そうする場合:

    $x = 5;
    $stmt->bindParam(1, $x, PDO::PARAM_INT);
    $x = 6;
    $stmt->execute(); //executes with 6 instead of 5
    

    実際には、5ではなく6で実行されます。これを行うには、メソッドに変数への参照が必要です。リテラルへの参照を持つことはできないため、これは、bindParamをリテラル(または参照できないもの)で使用できないことを意味します。

    $x = 5;
    $stmt->bindValue(1, $x, PDO::PARAM_INT);
    $x = 6;
    $stmt->execute(); //executes with 5 instead of 6
    

    次に:

    $stmt->bindParam(1, 1, PDO::PARAM_INT); 
    //invalid because there's no way to pass a literal 1 by reference
    $stmt->bindValue(1, 1, PDO::PARAM_INT);
    //valid
    


    1. SELECT * FROMのショートカットはありますか?

    2. MySQLでn番目の行を見つける方法

    3. libpq.5.dylibの間違ったコピーにリンクしているRuby'pg'gem(OSX上)

    4. SQL標準委員会のPostgreSQLエージェント