2012-11-30 31 views
-2

數據庫:MYSQL_QUERY插入空不爲0

DAlanding INT(11)JA NULL

$DAlanding = $_POST['DAlanding ']; 

if ($DAlanding =="") 
{ 
    $DAlanding =NULL; 
} 
$sql = "INSERT INTO cardex (DAlanding) VALUES('$DAlanding')"; 

但現在我需要它的日期:

DAdate date Ja NULL

$DAdate = $_POST['DAdate ']; 

if ($DAdate =="") 
{ 
    $DAdate = 'NULL'; 
} 
$sql = "INSERT INTO cardex (DAdate) VALUES('$DAdate')"; 
+0

是否有問題,刪除「? – Blazemonger

回答

0

將數據類型設置爲varchar或char。如果我們使用int,它會自動將0分配給相應的字段。

+0

期運用 如果($ PPAlanding == 「」){$ PPAlanding = 'NULL';} 而在我的數據庫變成VARCHAR它幫助。 所以我改變了我的DB爲varchar 恩添加' – Stefan

+0

但你有約會的雁? – Stefan

+0

我們無法修復日期字段。它應該指派爲0000-00-00這樣的 – RaJeSh

0

將NULL設置爲字符串「NULL」。那麼SQL將是正確的。

if ($DAlanding =="") 
    { 
     $DAlanding ="NULL"; 
    } 
    $sql = "INSERT INTO cardex (DAlanding) VALUES($DAlanding)"; 
+0

沒有幫助所有準備嘗試。 – Stefan

0

我很驚訝,你不要嘗試插入一個STRING值到int列錯誤。
通常您會忽略不想插入任何東西的列

+0

我可以插入像5或東西的價值,但我想如果沒有輸入會有NULL,而不是值0 – Stefan

1

爲了插入NULL,您需要傳遞它而不用引號。

$DAlanding = isset($_POST['DAlanding']) && $_POST['DAlanding'] != '' ? "'" . $_POST['DAlanding'] . "'" : 'NULL'; 

$sql = "INSERT INTO cardex (DAlanding) VALUES($DAlanding)"; 

您應該查找SQL注入,因爲您插入原始用戶輸入,從而創建漏洞。

+0

STIL得到值0 – Stefan

+0

回聲出'$ sql'向我們展示它包含什麼。 – MrCode

0

試試這個

if ($DAdate =="") 
{ 
    $DAlanding= NULL; 
} 
else{ 
    $DAlanding= "'".$DAdate."'"; 
} 

$sql = "INSERT INTO cardex (DAlanding) VALUES($DAlanding)"; 

前後$ DAlanding

+0

我認爲當這個值爲空時你是對的。但是當我有一個值我得到一個錯誤。 – Stefan

+0

我編輯了我的sol。現在檢查 – Vamsi