2014-01-06 185 views
0

我想要做的多個查詢在一個聲明中,這裏是我的代碼,它不工作。多個SQL查詢

$stmt = $mysqli->prepare("UPDATE menu SET DESCRIPTION= ('$txt1'), VISIBLE=('$ckHOME1') 
where id='1'; 
UPDATE menu SET DESCRIPTION= ('$txt1'), VISIBLE=('$ckHOME1') where id='1'; 
UPDATE menu SET DESCRIPTION= ('$txt2'), VISIBLE=('$ckHOME2') where id='2'; 
UPDATE menu SET DESCRIPTION= ('$txt3'), VISIBLE=('$ckHOME3') where id='3'; 
UPDATE menu SET DESCRIPTION= ('$txt4'), VISIBLE=('$ckHOME4') where id='4';"); 
$stmt->execute(); 
if (!mysqli_query($con,$sql)) 
{ 
die('Error: ' . mysqli_error($con)); 
} 
mysqli_close($con); 
} 
+0

http://www.php.net/manual/en/mysqli.multi-query.php –

+0

你爲什麼要第一次更新兩次? – Barmar

+0

如果您使用'mysqli_prepare',爲什麼插入變量而不是使用佔位符? – Barmar

回答

4

或者,您也可以把它作爲使用CASE一個UPDATE聲明。

UPDATE menu 
SET  
     DESCRIPTION = CASE WHEN id = 1 THEN '$txt1' 
          WHEN id = 2 THEN '$txt2' 
          WHEN id = 3 THEN '$txt3' 
          WHEN id = 4 THEN '$txt4' 
        END, 
     VISIBLE = CASE WHEN id = 1 THEN '$ckHOME1' 
          WHEN id = 2 THEN '$ckHOME2' 
          WHEN id = 3 THEN '$ckHOME3' 
          WHEN id = 4 THEN '$ckHOME4' 
        END 
where id IN (1, 2, 3, 4) 
3

您必須使用mysqli_multi_query()才能在一次調用中執行多個查詢。

但有沒有必要做多個查詢爲你在做什麼:

UPDATE menu 
SET description = 
     CASE id 
      WHEN 1 THEN '$txt1' 
      WHEN 2 THEN '$txt2' 
      WHEN 3 THEN '$txt3' 
      WHEN 4 THEN '$txt4' 
     END, 
    visible = 
     CASE id 
      WHEN 1 THEN '$ckHOME1' 
      WHEN 2 THEN '$ckHOME2' 
      WHEN 3 THEN '$ckHOME3' 
      WHEN 4 THEN '$ckHOME4' 
     END 
WHERE id IN (1, 2, 3, 4); 
+0

感謝您的迴應,你能告訴我怎麼做? – user2990463

+0

它在示例中顯示 –

+0

@ user2990463您可以通過調用'mysqli_query'的方式來調用它。 – Barmar