2012-04-06 4 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. А?

Update: Тип данных в services_flag поле в моей базе данных SQL является BIT. Я не знаю, имеет ли это значение.

+0

Не должен иметь значения, но попробуйте '$ job [': services_flag'] = 0;' Обратите внимание на ':' в ключе массива. –

+0

Я попробовал это, не повезло:/ –

+0

Просто для усмешки попробуйте $ job ['services_flag'] = 42; Может быть, что-то связано с ошибкой 0 за нуль. – Cerad

ответ

1

Это known bug с BIT типа, вы должны использовать bindParam для него

0

Вы должны связать значение для него:

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

Это один из способов сделать это. Я видел массив со значениями, сопоставленными с заполнителями, переданными в execute().

Смежные вопросы