因此,在這段代碼中,我剛從表中刪除了一行,因此img_pos的值分別爲: 1,2,3,4,5 現在,他們是(假設我們刪除的第三項): 1,2,4,5 當然,我想這是: 1,2,3,4MySQL - 批量重命名PHP中的所有行
所以我要批量重命名的行。
我得到這個,但似乎並沒有工作....
$sql = "SELECT * FROM $tableImg WHERE img_acc = $accid ORDER BY img_pos";
$res = mysql_query($sql);
$num = mysql_num_rows($res);
$i = 0;
$n = 1;
while($i<$num){
$sql = "SELECT * FROM $tableImg WHERE img_acc = $accid ORDER BY img_pos DESC LIMIT $i,1";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
$img_pos = $row['img_pos'];
$sql = "UPDATE $tableImg SET img_pos = '$n' WHERE img_acc = '$accid' AND img_pos = '$img_pos'";
$res = mysql_query($sql);
$i++;
$n++;
}
mysql_close();
$ tableImg只是包含表名稱,工作得很好的變量。 我覺得問題出在「$ img_pos = $ row ['img_pos'];」的位置,因爲所有的querys在某個地方都有不同的使用方式,不過它們應該有點不同,並且它們應該可以工作......
在此先感謝!
你不應該__need__做到這一點,PK應該是備案 –
@MarkBaker的壽命,你是正確的,但有一個固定值沒有證據表明img_pos是主鍵。我的問題是:編號中有「漏洞」真的很重要嗎?他們仍然會按照正確的順序。 – GarethL
好吧,我使用img_pos以正確的順序放置圖像,所以如果我啓動「moveImageUp」腳本,則4將被稱爲3,並且沒有任何移動。 而img_pos不是主鍵,它只是一個簡單的簡單列。 關於如何使這成爲可能的任何想法? 只需選擇所有你想要的和重命名他們1,2,3 ...不應該是那麼複雜的權利? – AmarokM