2013-03-21 89 views
0

我想要做的是用相同的查詢更新兩行。我所擁有的是這樣的:用相同的查詢更新兩行

$sqlUpdate = "UPDATE user.user SET level='2' WHERE id='".$_GET['char']."' AND level >0 AND item>0 LIMIT 1 "; 

我的想法是做這樣的事情:

$sqlUpdate = "UPDATE user.user SET level='2' && SET power='1' WHERE id='".$_GET['char']."' AND level >0 AND item>0 LIMIT 1 "; 

在我看來,看起來合乎邏輯,但它不工作,如何做到這一點的任何想法?謝謝!

+0

你可能想要添加sql標記,因爲這是比php更多的sql相關的。爲什麼不使用兩個查詢? – user829323 2013-03-21 23:39:24

+0

那裏刪除'LIMIT 1'? – hjpotter92 2013-03-21 23:40:05

+2

是否要更新一行中的2行或2個字段? – 2013-03-21 23:40:09

回答

-2

對於在更新查詢更新多個字段:

您用逗號分隔字段/值。

$sql = "UPDATE user.user SET level='2', power='1' WHERE id='" . $_GET['char'] . "' AND level > 0 AND item > 0 LIMIT 1;"; 

注:以上查詢是容易受到SQL Injection因爲什麼都可以傳遞到用戶的$ _GET變量。這可以被惡意使用來改變你的查詢。

對於在更新查詢更新不止一行:

只有相同數據可以被放置在多行。您修改where語句以在邏輯上包含應更新的行。如果每行的數據不同,那麼這是不可能的,但是您可以使用prepared statements

準備語句允許您爲將要運行多次的查詢設置模板。然後你可以傳遞這些值。大多數數據庫都會緩存查詢,以提高性能。它還通過從數據中分離查詢來防止SQL注入。

+0

爲什麼downvotes? – 2015-04-19 20:17:14

3

你的意思是更新2欄?這是您的第二個查詢正在嘗試執行的操作。試試這個:

$sqlUpdate = "UPDATE user.user SET level='2', power='1' WHERE id='".$_GET['char']."' AND level >0 AND item>0 LIMIT 1 "; 
+0

這是完美的作品,我很抱歉我的詞彙錯誤 – user1638487 2013-03-21 23:43:12

+0

你知道如何「添加」+1到一個列?可以說類似$ sqlUpdate =「UPDATE user.user SET level ='2',power ='+ 1'WHERE id ='」。$ _ GET ['char']。「'AND level> 0 AND item> 0 LIMIT 1「; – user1638487 2013-03-21 23:50:13

+0

do power = power + 1 – 2013-03-21 23:50:49