Почему PDO требует, чтобы поля не были нулевыми и как нарушить это правило? - PullRequest
1 голос
/ 28 января 2011

Я использую подготовленные операторы PDO, и, очевидно, некоторые поля могут иногда не заполняться, поэтому я получаю ошибку нарушения ограничения целостности, Как заставить PDO не искать пустые поля и просто поместить поле в БД как есть?

PS Они даже в текстовом типе.

1 Ответ

2 голосов
/ 03 февраля 2011

Зациклите их и удалите поля, которые имеют значение NULL, перед выполнением:

$fields = array(id=>3, name=>NULL, phone=>555-5555)
$attrinutes = array();

foreach ($fields as $field => $value) {
   if(isset($value)){
      $attributes[$field] = $value;
   }
}


$keys = array_keys($attributes);
$values = array_values($attributes);

$sql = "INSERT INTO ". static::$table_name ."(";
$sql .= implode(", ", $keys );
$sql .= ") VALUES (";
$sql .= implode( ", ", array_fill(0, count($attributes) ,'?' ) );
$sql .= ")";

$q = $this->connection->prepare($sql);
$q->execute($values);

*** NOT TESTED ***

Также убедитесь, что в вашей БД установлены поля NULL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...