2011-03-24 60 views
-2

首先感謝您的幫助,我問如何從左側開始將數據插入字段?根據實體有時候,最後幾個字段留空,但我需要將填充字段插入表中。如果我嘗試這樣做,我顯然會遇到列值不匹配錯誤。MYSQL - 從左邊插入INTO

謝謝!

+3

我不明白你在問什麼,你能告訴我們你到目前爲止的代碼嗎? – 2011-03-24 09:15:30

+1

請澄清你的問題。 – 2011-03-24 09:16:29

+0

如果您在同一個表中有不同實體的字段數量可變,那麼您的設計可能會得到改進。 – Matt 2011-03-24 09:19:02

回答

2

只要指定唯一的字段名稱,你此刻會插入:

INSERT INTO table (field1, field2, field3) VALUES (value1, value2, value3) 

或這樣

INSERT INTO table SET field1=value1, field2=value2, field3=value3 

無論是從左,右或方格

如SQL查詢只是一個字符串,你可以使用一些PHP代碼以你想要的方式構建這個字符串。

hereis在非常簡單的輔助函數的形式的示例代碼,以產生動態SET語句:

function dbSet($fields) { 
    $set=''; 
    foreach ($fields as $field) { 
    if (isset($_POST[$field])) { 
     $set.="`$field`='".mysql_real_escape_string($_POST[$field])."', "; 
    } 
    } 
    return substr($set, 0, -2); 
} 

它可以通過$fields陣列來控制。 這樣使用

//if we have full set of data 
$fields = explode(" ","name surname lastname address zip fax phone"); 
$query = "INSERT INTO $table SET ".dbSet($fields); 

//if we have only three fields ready 
$fields = explode(" ","name surname lastname"); 
$query = "INSERT INTO $table SET ".dbSet($fields); 

但你迫切需要學習基本的PHP字符串操作,可以自己做這樣的事情。
字符串操作在PHP中最爲重要,因爲幾乎PHP的每個任務都只是像您的情況那樣進行字符串操作。

1

使用querys像

insert into table set col1=val1, col2=val2; 

insert into table(col1, col2) values(val1, val2); 

也就是說它周圍的唯一途徑。我認爲方法2是最常用的。

如果您有任何方法可以爲每列提供默認值,請將它們用於沒有值的列。

+0

對於任何理解抱歉,但我生成的記錄可能會或可能不會有基於實體數據的最後一個字段,所以INSERT到tables()values()顯然不起作用。 – lamplight 2011-03-24 09:25:30

+0

@lamplight不要指定這次你不打算插入的字段。不打算插入col2?不要將它寫入查詢以及它的價值。 – 2011-03-24 09:30:50

+0

我試圖做的一點是它是動態的,即我沒有控制權,所以如果我可以使默認值爲空或者是甜點 – lamplight 2011-03-24 09:36:35

2

您使用的列數和您嘗試插入的值的數量必須匹配。您可以指定要插入的內容,因此不必傳遞不需要的列(因此不需要傳遞「空白」)。

INSERT INTO Store_Information (store_name, Sales, Date) 
VALUES ('Los Angeles', 900, 'Jan-10-1999') 

的更多信息: http://www.1keydata.com/sql/sqlinsert.html

0

如果所有的數據可以是 「NULL」,你可以設置與變量,如果沒有設置,爲NULL,例如查詢:

$col1 = null; $col2 = null; $col3 = null; $col4 = null; $col5 = null;

然後填充您需要的列 $col1 = 'val1'; $col2 = 'val2';

$query = "INSERT INTO (col1, col2, col3, col4, col5) VALUES ($col1, $col2, $col3, $col4)";

真心我永遠不會使用這樣的東西......但你要求它...

+0

請注意,您必須修復值爲 – MiPnamic 2011-03-24 09:24:32

0
mysql_query("INSERT INTO People (First_Name, Last_Name, Age) 
VALUES ('Marcus', 'Porter', '28')"); 

mysql_query("INSERT INTO People (First_Name, Last_Name, Email) 
VALUES ('Marcin', 'Kruk', '[email protected]')"); 
+0

的引號因爲雙「(」),第二個查詢將生成一個錯誤。 – 2011-03-24 09:25:30