新聞中心
php sql更新數(shù)據(jù)
php有一個(gè)方法是mysql_affected_rows(),這個(gè)方法的意思是獲取上一次操作數(shù)據(jù)庫(kù)的所影響的行數(shù)
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比天柱網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式天柱網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋天柱地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。
可以使用這個(gè)方法來(lái)判斷是否update語(yǔ)句是否執(zhí)行成功。
直接使用mysql_query($sql),個(gè)人覺(jué)得其實(shí)也可以的,但是前提是數(shù)據(jù)庫(kù)類型是那種自動(dòng)提交類型,像MyISAM 而不是需要手動(dòng)提交的類型,像:InnoDB
個(gè)人理解:自動(dòng)提交類型會(huì)直接處理$sql語(yǔ)句,只要這個(gè)語(yǔ)句沒(méi)有錯(cuò)誤,那么就一定是執(zhí)行成功的。并且一定是已經(jīng)執(zhí)行了,但是需要手動(dòng)提交的類型就算這個(gè)SQL沒(méi)有錯(cuò)誤,如果你沒(méi)有手動(dòng)提交那么這個(gè)語(yǔ)句是不會(huì)執(zhí)行的,那么你的表中的數(shù)據(jù)其實(shí)沒(méi)有改變,這個(gè)盡針對(duì)于非select語(yǔ)句。
php每天抓取數(shù)據(jù)并更新新
以前我用過(guò)querylist插件抓數(shù)據(jù),服務(wù)器寫和定時(shí)器,每天固定時(shí)間去運(yùn)行腳本。朝這個(gè)方式試試
高并發(fā)下數(shù)據(jù)的更新,應(yīng)該 update table xxx set num = num - 1 的方式,這種方式可以保證數(shù)據(jù)的正確性。
但是會(huì)出現(xiàn) num 為負(fù)數(shù)的問(wèn)題,如果庫(kù)存為負(fù)數(shù),顯然是不合理的。
于是,需要將 num 字段設(shè)置為 無(wú)符號(hào)整型,這樣就不會(huì)出現(xiàn)負(fù)數(shù)了,因?yàn)椋绻麥p到負(fù)數(shù),就會(huì)更新失敗。
但是這種依然會(huì)造成很多無(wú)用的更新語(yǔ)句的執(zhí)行,是不合理的。
于是,update table xxx set num = num - 1 where num 0,
這樣當(dāng) num 等于0之后就不會(huì)去更新數(shù)據(jù)庫(kù)了,減少了很多無(wú)用的開(kāi)銷。
這種方式被稱作“樂(lè)觀鎖”
此外,對(duì)于搶紅包這種非整數(shù)的操作,我們應(yīng)該轉(zhuǎn)換為整數(shù)的操作。
關(guān)于搶購(gòu)超賣的控制
一般搶購(gòu)功能是一個(gè)相對(duì)于正常售賣系統(tǒng)來(lái)說(shuō)獨(dú)立的子系統(tǒng),這樣既可以防止搶購(gòu)時(shí)的高并發(fā)影響到正常系統(tǒng),
也可以做到針對(duì)于搶購(gòu)業(yè)務(wù)的特殊處理。
在后臺(tái)設(shè)計(jì)一些功能,可以就昂正常的商品加入到搶購(gòu)活動(dòng)中并編輯成為搶購(gòu)商品,寫入到搶購(gòu)商品表,當(dāng)然
也可以把搶購(gòu)商品表寫入redis而不是數(shù)據(jù)表。并且在原商品表寫入一個(gè)同樣的商品(id相同,用于訂單查看,
此商品不可購(gòu)買)
如果是數(shù)據(jù)表,為了控制超賣,需要對(duì)表進(jìn)行行鎖,更新的時(shí)候帶上 where goods_amount 0。
如果是redis,使用 hincrby 一個(gè)負(fù)數(shù)來(lái)減庫(kù)存,并且 hincrby 會(huì)返回改變后的值,再來(lái)判斷返回值是否大于0,
因?yàn)閞edis每個(gè)命令都是原子性的,這樣不用鎖表就可控制超賣。
php中如何實(shí)現(xiàn)實(shí)時(shí)更新數(shù)據(jù)呢?jQuery?
網(wǎng)頁(yè)一般是單向主動(dòng)短鏈接,實(shí)時(shí)更新實(shí)在有些不便,即使一方掉線,另一方也不能及時(shí)感知。一般所謂的實(shí)時(shí)刷新,大多采用定時(shí)刷新(輪詢),或長(zhǎng)輪詢的方式做,ajax用于更新數(shù)據(jù)確實(shí)是比較簡(jiǎn)單方便的。
輪詢你就settimeout,長(zhǎng)輪詢你就每次接收數(shù)據(jù)成功后,再來(lái)一次長(zhǎng)輪詢。但你鏈接別人的數(shù)據(jù),了解一下供應(yīng)商的刷新機(jī)制、周期再做考慮。
當(dāng)然這些都是偽實(shí)時(shí),真的實(shí)時(shí)用http協(xié)議是不合適的,你得用flash插件做。而你用的是api供應(yīng)商的東西,這條路就基本走不通了。
如何在網(wǎng)頁(yè)上用PHP更新MYSQL里的多條數(shù)據(jù)?
最直接簡(jiǎn)單的方式,一個(gè)輸入框一個(gè)提交按鈕,直接從網(wǎng)頁(yè)輸入SQL語(yǔ)句然后交由后端執(zhí)行,這種方法一定得注意SQL注入以及MySQL的權(quán)限控制。
在1的基礎(chǔ)上的一種取巧方法,就是安裝phpMyAdmin。根據(jù)你要更新的需求列出種種SQL語(yǔ)句的格式,采用參數(shù)化輸入,而不是完全的SQL語(yǔ)句輸入,后端使用參數(shù)化查詢,防止SQL注入。
分享名稱:php對(duì)數(shù)據(jù)的更新方法 php 更新
標(biāo)題鏈接:http://www.ef60e0e.cn/article/ddghggc.html