2010-04-28 38 views
0

我想將一些NULL值傳遞給stroed過程,但PHP總是保留變量爲空字符串''而不是NULL。將NULL值傳遞到mysql存儲過程

我的數據庫插入功能看起來像這樣。 (我使用框架和ADODB,所以如果它看起來很奇怪,那就是爲什麼)。

function insert_emp($f_name, $last_name, $dob) { 

    if(!isset($dob)){ 
     $dob = NULL; 
    } 

    $this->DB->setConnection("CALL insert_emp('$f_name', '$l_name', '$dob')"); 
} 

我確保$ dob被傳遞一個空字符串''。但由於某些原因,當它調用存儲過程時,它不會更改爲NULL。 dob是一個日期時間字段,mysql抱怨說你不能輸入一個空字符串作爲DATETIME。如果我硬編碼插入如此

$this->DB->setConnection("CALL insert_emp('Test1', 'Test2', 'NULL')"); 

它會工作。謝謝您的幫助。

回答

2

NULL不能表示爲字符串。所以你應該使用一個字符串literal null。

function insert_emp($f_name, $last_name, $dob = 'NULL') { 
    $this->DB->setConnection("CALL insert_emp('$f_name', '$l_name', '$dob')"); 
} 

我已經將它設置爲默認值,它應該做你想要的東西。