2010-07-03 55 views
1

有沒有一種方法來設置一個IF語句在MySQL和PHP寫的東西到列或不?我想要做的是完全跳過一列,以便寫入「NULL」,以防列中沒有要提交的數據。設置IF語句寫的東西與否,一個列在MySQL

如果沒有在一列被提交到數據庫中,我希望它是NULL該記錄明顯。現在,在沒有數據的每一列中,它只是空的。

我可以ofcourse設置一個完全新的變量,新的查詢和所有的,只是跳過查詢該列,但對我來說,這將會是噸以上(可能)不必要的代碼。

+0

你的情況的更多的解釋,你給,你甚至可能有人可能只是給你所需要的代碼。 – 2010-07-03 22:49:12

回答

1

您可以在SQL中使用CASE語句執行條件邏輯,例如

UPDATE table SET column=CASE WHEN @param='' THEN NULL ELSE @param END WHERE ... 
+0

我不確定那是做我想做的。看,我想檢查一個PHP變量是否爲真,如果是,我想寫入列。 – Nisto 2010-07-03 22:52:52

+0

請參閱更新答案中的示例。 – cdonner 2010-07-04 00:29:58

0

好吧,你想要的信息,所以在這裏我們去...

現在看起來是這樣的:

$query = "INSERT INTO requests (Ex1, Ex2, Ex3, Ex4, Ex5, Ex6) VALUES ('".$Ex1."', '".$Ex2."', '".$Ex3."', '".$Ex4."', '".$Ex5."', '".$Ex6."')"; 

我要插入的情況下,東西「實例3」有數據要插入,否則,我基本上不想在查詢中包含要提交給該列的列或數據。

0

插入空不加引號插入變量。

INSERT INTO table (col1, col2) VALUES ($val1, $val2); 

PHP的快速位可加引號:

foreach($_POST as $key=>$value) { 
    if($vaule == '') $_POST[$key] = 'NULL'; 
    else $_POST[$key] = "'".$value."'"; 
} 

但你應該檢查並在其上驗證數據的路無論如何,所以通常以上PHP是太簡單了。但是,請將引號關閉,只將其添加到實際值中。您可以設置一個函數進行驗證,在使用之前清理並向所有數據添加引號。

+0

這是否工作?我的意思是,我不需要在VALUES部分用'或者'包圍它們,以便能夠從PHP代碼中獲取值...? – Nisto 2010-07-03 23:36:30

+0

不,您不需要,只有當變量正在使用的是實際的數據,如果它是NULL,則它是有效的SQL,因此將'或'關閉意味着它將作爲實際的NULL插入。如果你喜歡... <?php $ insert =「插入表(col1,col2)VALUES(」。$ val1。「,」。$ val2。「)」; ?> – Ashley 2010-07-04 18:50:16