php-PDO-前処理バインドパラメータの詳細

989 ワード

//parameter = array(':username'=>'jack', ':money'=>'123.00')
foreach ($parameters as $key => $value)
{
    $stmt->bindParam($key, $value);   //    ,$stmt      
}

パラメータをループバインドするときに$valueを直接使用して、異なる変数名バインドを適用することはできません.同じ変数名を使用すると、execute()を呼び出すと、バインドされた値が最後のループ時に$valueに割り当てられた値になります.
上記のコードは次のように書き換えることができます.
//parameter = array(':username'=>'jack', ':money'=>'123.00')
foreach ($parameters as $key => $value)
{
    //$stmt->bindParam($key, $value);   //    ,$stmt      
    $stmt->bindParam($key, $parameters[$key]);
}

公式マニュアルを見てください.
public bool PDOStatement::bindParam ( mixed $parameter , mixed &$variable [, int $data_type = PDO::PARAM_STR [, int $length [, mixed $driver_options ]]] )
の2番目のパラメータmixed&$variableは参照でパラメータを渡すので、変数のみをパラメータとして提供し、直接数値を提供することはできません.