2011-01-28 41 views
1

我正在使用PDO準備語句,顯然有時可能不會填充某些字段,所以我得到一個完整性約束違規錯誤,如何使PDO不查找空字段,只是把字段放在數據庫,因爲它是?爲什麼PDO要求字段不爲空,以及如何打破該規則?

P.S.他們甚至處於TEXT類型。

+4

我已經成功地避免PHP比更幾年,所以我不太瞭解PDO,但是「完整性約束違規錯誤」聽起來像「NOT NULL」是數據庫的要求,而不是PDO的要求。 – Quentin 2011-01-28 20:03:36

回答

2

環雖然他們並刪除執行之前是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在您的數據庫

相關問題