2013-10-16 39 views
0

我有一個表格,顯示一些圖像和其他數據從一個MySQL表。使用單選按鈕選定圖像的「廚房」獲取場改爲3。我有這個工作確定,但應該永遠只能是一個3表中的值。我怎麼能改變下面的代碼也將表中已有的任何3改爲1的值?1個查詢可以更改2項的同一領域中的表?

// if featured is checked, then set gallery field to 3 
if(isset($_POST['featured'])){ 
    $chk = (array) $_POST['featured']; 
    $p = implode(',',array_keys($chk)); 
    $t = mysqli_query($link, "SELECT * FROM gallery WHERE id IN ($p)"); 
    if ($t){ 
     $q = mysqli_query($link, "UPDATE gallery SET gallery=3 WHERE id IN ($p)"); 
     header('Location: galleryadmin.php'); exit(); 
    } 
    else{ 
     echo '<script type="text/javascript"> alert("Dog Has Not Been Featured, Try Again 
                Or Contact Site Developer") </script>'; 
    } 
} 

任何人都可以幫忙嗎?

回答

3
UDPATE yourtable 
SET gallery = IF(id = $p, 3, 1) 

備案其中id = $ P,則if回報3。對於任何其他記錄,它返回1,和那些1/3值會被分配到圖庫領域。

這有點低效率的,如果你是一個非常大的表,它會被重新編寫所有,但一個記錄主要有相同值的記錄過的。性能方面,你可能會更好使用事務和兩個查詢:

start transaction; 
update yourtable set gallery=1 where gallery=3; 
update yourtable set gallery=3 where id=$p; 
commit; 

這理論上應該只改變兩個記錄:「舊」畫廊-3,而新的這一點變得畫廊-3。

+0

謝謝@Marc B,I中使用的第二實施例,因爲一些記錄具有在畫廊字段中的值2。這工作得很好! – GlenR

相關問題