2012-04-06 5 views
1

私はそうのような名前のプレースホルダーを使用しています:PDOという名前のプレースホルダを使用して

$job['services_flag'] = 0; 

    $SQL = "INSERT INTO jobs (
         services_flag 
        ) 
        VALUES (
         :services_flag 
        )"; 

    $STH = $DBH->prepare($SQL); 
    $STH->execute($job); 

しかし、これは1の挿入を主張。

私は名前のプレースホルダを使用しない場合:

$SQL = "INSERT INTO jobs (
         services_flag 
        ) 
        VALUES (
         0 
        )"; 

    $STH = $DBH->prepare($SQL); 
    $STH->execute(); 

は、その後、それは0を挿入します。え?

更新: 私のSQLデータベース内services_flagフィールドのデータ型がBITです。私はそれが何か違いがあるかどうかはわかりません。

+0

違いはありませんが、 '$ job [':services_flag'] = 0;'を試してください。配列キーの ':'に注意してください。 –

+0

私はそれを試しました、運はありません:/ –

+0

ちょうど笑顔で、$ job ['services_flag'] = 42;ヌルと間違っている0と何か関係があるかもしれません。 – Cerad

答えて

1

これはknown bugタイプBITで、あなたはあなたはそれに値をバインドする必要があり、それ

0

ためbindParamを使用すべきである。それを行うための一つの方法だ

$STH->bindValue(':services_flag', $job['services_flag']); 
$STH->execute(); 

。 execute()で渡されたプレースホルダにマップされた値を持つ配列も見てきました。

関連する問題