2010-01-07 63 views
0

我有兩個不同的查詢在我的PHP頁面爲同一個表,第一個是執行,如果我有兩個不同的值爲兩列,但在某些情況下,我只能使用第一個值,我可以做到這一點與相同的查詢還是應該使用兩個不同的查詢?我可以避免使用INSERT查詢中的NULL值覆蓋列嗎?

// query 1 
"INSERT INTO my_table (column_1, column_2) VALUES ('$value_1', '$value_2')"; 

// second query, used if $value_2 is null 
"INSERT INTO my_table (column_1) VALUES ('$value_1')"; 

// can I do something like this without use a SELECT for column_2 before the INSERT? 
$value_2 = null; 
"INSERT INTO my_table (column_1, column_2) VALUES ('$value_1', '$value_2')"; 
// ======================================= new value ===^ | ^=== mantain old value because it's null 

因此,我可以執行INSERT語句與新的VAL,而不覆蓋舊的VAL與空值?

回答

2

INSERT將永遠不會覆蓋舊記錄(儘管如果您試圖插入破壞唯一鍵約束的記錄,它可能會失敗)。因此,即使$value_2爲空,您也可以使用第一個查詢,並獲得相同的結果。

如果您想覆蓋記錄,則需要使用UPDATE語句。在這種情況下,如果你願意,你可以只覆蓋一列。 UPDATE語法請參見http://dev.mysql.com/doc/refman/5.0/en/update.html

也有REPLACE覆蓋舊的行在唯一鍵的情況下,但它聽起來像這是你想要做的相反。

+0

好的謝謝,我會記住INSERT和UPDATE之間的區別,cya – vitto 2010-01-07 17:42:56