2011-03-21 106 views
1

我正在嘗試編寫一個MySQL查詢(使用PHP),它將用一組包含在另一個(imploded)數組中的值更新(imploded)數組內的字段名。來自數組的MySQL UPDATE字段名與來自數組的字段值

我現在所擁有的是這樣的:

$edit= mysql_query ("UPDATE tablename SET `".$EXPfields."` = '".$EXPvalues."' 
WHERE ID = '$ID'"); 

$EXPfields = EXP1, ?EXP2?, ?EXP3
$EXPvalues = Communications', 'Electronics', 'Engineering
(包括內爆陣,其實是一個反引號:`)

我得到以下錯誤消息:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' ?EXP2?, ?EXP3? = 'Communications', 'Electronics', 'Engineering' ' at line 2

(再次,?實際上是一個倒退')

我一直在玩這個已經很長時間了,但我看不出哪裏出了問題,請幫助!謝謝!

+0

對不起,這應該閱讀: $ EXPfields = EXP1?EXP2?EXP3 – RLJ 2011-03-21 15:45:44

回答

1

更新查詢語法如下:

UPDATE table 
SET column = expression 
WHERE predicates; 


你可以遍歷字段數組,並創建一個包含列名和值的新數組。例如:

$update_sql = ''; 

for($i = 0; $i < count($EXPfields); ++i) 
{ 
    $update_sql = "`" . $EXPfields[$i] . "` = '" . $EXPvalues[$i] . "', "; 
} 

$update_sql = substr($update_sql, 0, -2); 

$edit = mysql_query(" 
    UPDATE 
     tablename 
    SET 
     " . $update_sql . " 
    WHERE 
     ID = '$ID'"); 
+0

感謝米歇爾,但我仍然得到同樣的語法錯誤?。 和palindrom,我不想像這樣構造它,因爲字段名稱/值的數組非常長。 任何想法?謝謝。 – RLJ 2011-03-21 15:59:47

+0

請勿將此類評論添加爲答案。 – 2011-03-21 16:01:18

+0

如果要更新多個字段,則必須在SQL中使用field1 = val1,field2 = val2等語法。 – 2011-03-21 16:02:18

0
UPDATE table 
    SET 
    field1 = expression1, 
    field2 = expression2, 
    field3 = expression3 
WHERE ... 
0

你需要做的逗號分隔字段=值對。例如:

$query = UPDATE ?tablename? SET ?field1?='value1', ?field2?='value2' WHERE (?field3?='value3')