樓主貼出的代碼是主要代碼不是完整代碼,以下是對你貼出代碼的修改,接收數組并批量更新
創(chuàng)新互聯為企業(yè)級客戶提高一站式互聯網+設計服務,主要包括成都網站建設、網站設計、重慶APP軟件開發(fā)、微信小程序開發(fā)、宣傳片制作、LOGO設計等,幫助客戶快速提升營銷能力和企業(yè)形象,創(chuàng)新互聯各部門都有經驗豐富的經驗,可以確保每一個作品的質量和創(chuàng)作周期,同時每年都有很多新員工加入,為我們帶來大量新的創(chuàng)意。
接收數據格式形如:
array(
0=array(
'id' = 1,
'title'= '標題1'
'url'= '...'
),
1=array(
'id' = 1,
'title'= '標題1'
'url'= '...'
),
)
注意在原來的基礎上加了更新條件id,不加的話是會更新全部的。
A頁面代碼:
?php
$exec="select * from focusimg";
$result = mysql_query($exec,$link);
$i=0;
while($pt=mysql_fetch_array($result)){
?
tr onmouseover="this.className='admTr'" onmouseout="this.className=''"
td width="17%" align="right"標題?php echo $pt['id']; ?:input name="?php echo "focusimg[$i][id]"; ?" value="?php echo $pt['id']; ?" type="hidden"http://td
tdinput name="?php echo "focusimg[$i][title]"; ?" type="text" id="textfield" value="?php echo $pt['title'];?" size="30" //td
td width="17%" align="right"鏈接?php echo $pt['id']; ?:/td
tdinput name="?php echo "focusimg[$i][url]"; ?" type="text" id="textfield" value="?php echo $pt['url'];?" size="30" / /td
/tr
?php
$i++;
};
?
B頁面代碼:
?php
include 'conn.php';
$focusimg=$_POST['focusimg'];
foreach($focusimg as $k=$v) {
$exec="update chips set title='{$v[title]}',url='{$v[url]}' where id='{$v[id]}'";
mysql_query($exec, $link);
}
mysql_close($link);
echo "edit OK!";
?
以前我用過querylist插件抓數據,服務器寫和定時器,每天固定時間去運行腳本。朝這個方式試試
高并發(fā)下數據的更新,應該 update table xxx set num = num - 1 的方式,這種方式可以保證數據的正確性。
但是會出現 num 為負數的問題,如果庫存為負數,顯然是不合理的。
于是,需要將 num 字段設置為 無符號整型,這樣就不會出現負數了,因為,如果減到負數,就會更新失敗。
但是這種依然會造成很多無用的更新語句的執(zhí)行,是不合理的。
于是,update table xxx set num = num - 1 where num 0,
這樣當 num 等于0之后就不會去更新數據庫了,減少了很多無用的開銷。
這種方式被稱作“樂觀鎖”
此外,對于搶紅包這種非整數的操作,我們應該轉換為整數的操作。
關于搶購超賣的控制
一般搶購功能是一個相對于正常售賣系統來說獨立的子系統,這樣既可以防止搶購時的高并發(fā)影響到正常系統,
也可以做到針對于搶購業(yè)務的特殊處理。
在后臺設計一些功能,可以就昂正常的商品加入到搶購活動中并編輯成為搶購商品,寫入到搶購商品表,當然
也可以把搶購商品表寫入redis而不是數據表。并且在原商品表寫入一個同樣的商品(id相同,用于訂單查看,
此商品不可購買)
如果是數據表,為了控制超賣,需要對表進行行鎖,更新的時候帶上 where goods_amount 0。
如果是redis,使用 hincrby 一個負數來減庫存,并且 hincrby 會返回改變后的值,再來判斷返回值是否大于0,
因為redis每個命令都是原子性的,這樣不用鎖表就可控制超賣。
第一種就是根據事務來實現這個功能,多條更新用事務來實現和回滾
第二種 就是循環(huán)更新了,這個不需要數據一致性,即其中一條語句更新失敗 不影響其他數據,建議還是用事務
可以同時更新內容相同的記錄,比如id=1、2、3的記錄的狀態(tài)都改為0;那么可以使用$db-where("id in(1,2,3)")-save(array('status'=0));
有兩種實現方法:
1、你可以用PHP服務器推技術,當數據發(fā)生變化時,主動推送到頁面顯示。相關技術可以參考文檔。百度也很多。
2、你可以用Javascript,每過一秒鐘,使用Ajax獲取數據,一秒鐘刷新一次,也可以實現的。
第一種我也不會。第二種相信你可以的。
while的話是循環(huán),你用了只會一行行加