2012-06-28 99 views
0

我想從我的數據庫中編輯表格。該表格有許多數據。 我會顯示sample.Do我需要寫很多mysql更新語句嗎?有其他方法只寫一個語句嗎?我是PHP的初學者?謝謝我所有的朋友。我可以使用php做多個更新SQL嗎?

 mysql_query("UPDATE `mytablename` SET `mobiletitle` = '$mobiletitle1', 
     `mobilepublished` = '1', 
     `mobiletext` = '$mobilefulltext1', 
     WHERE `id` ='$id1';"); 

      mysql_query("UPDATE `mytablename` SET `mobiletitle` = '$mobiletitle2', 
     `mobilepublished` = '1', 
     `mobiletext` = '$mobilefulltext2', 
     WHERE `id` ='$id2';"); 

     mysql_query("UPDATE `mytablename` SET `mobiletitle` = '$mobiletitle3', 
     `mobilepublished` = '1', 
     `mobiletext` = '$mobilefulltext3', 
     WHERE `id` ='$id3';"); 
    etc............. 
     mysql_query("UPDATE `mytablename` SET `mobiletitle` = '$mobiletitle30', 
     `mobilepublished` = '1', 
     `mobiletext` = '$mobilefulltext30', 
     WHERE `id` ='$id30';"); 

回答

1

你想用一個特定的數據更新一個表中的多個行,所以壞消息你必須一個接一個......但你可以改進你的代碼。如果我在那裏,你我將創建一個功能,我只是把它,像

function update_my_data($movilefilltex1,$id1){ 

mysql_query("UPDATE `mytablename` SET `mobiletitle` = '$mobiletitle1', 
     `mobilepublished` = '1', 
     `mobiletext` = '$mobilefulltext1', 
     WHERE `id` ='$id1';"); 
....... 


} 

因此,爲了使多個插入您可以撥打update_my_data(value1,valu2)你所需要的時間。例如在一個循環中或者只是在你需要的時候。

0

如果有UNIQUE指數id(會有,如果這是你的PRIMARY KEY),你可以使用INSERT ... ON DUPLICATE KEY UPDATE

INSERT INTO mytablename (id, mobiletitle, mobilepublished, mobiletext) VALUES 
    ('$id1', '$mobiletitle1', 1, '$mobilefulltext1'), 
    ('$id2', '$mobiletitle2', 1, '$mobilefulltext2'), 
    -- etc. 
ON DUPLICATE KEY UPDATE 
    mobiletitle  = VALUES(mobiletitle), 
    mobilepublished = VALUES(mobilepublished) 
    mobiletext  = VALUES(mobiletext); 

注意,這將,當然,如果插入新記錄他們不存在;而您的多個UPDATE命令方法不會(它會引發錯誤)。

無論哪種情況,您都可以在PHP的循環中動態地構建/執行SQL。

我還要提醒你會得到很好的建議,審議通過你的變量MySQL作爲參數傳遞給prepared statement特別如果這些變量的內容是你的控制之外(因爲你可能會受到SQL注入)。如果你不知道我在說什麼,或者如何解決它,請閱讀Bobby Tables的故事。

全部放在一起(使用PDO,而不是您正在使用的deprecated MySQL extension):

for ($i = 1; $i <= 30; $i++) { 
    $sqls[] = '(?, ?, 1, ?)'; 
    $arr[] = ${"id$i"}; 
    $arr[] = ${"mobiletitle$i"}; 
    $arr[] = ${"mobilefulltext$i"}; 
} 

$sql = 'INSERT INTO mytablename (id, mobiletitle, mobilepublished, mobiletext) 
     VALUES 
    ' . implode(',', $sqls) 
    . 'ON DUPLICATE KEY UPDATE 
      mobiletitle  = VALUES(mobiletitle), 
      mobilepublished = VALUES(mobilepublished) 
      mobiletext  = VALUES(mobiletext)'; 

$db = new PDO("mysql:dbname=$db", $user, $password); 
$qry = $db->prepare($sql); 
$qry->execute($arr); 

請注意,您也可以考慮存儲arrays您1..30變量。

-1
update table1,table2 SET table1.column1 = 'valueX',table2.coulumn2 = 'valueX' where table1.column = table2.coulumn2 ; 
相關問題