//完成你的問題需要先假設幾個變量//傳值的id$aId = $_GET['id'] //要修改的新check內容$newCheck = "aaa";//要在表B中加的數值$addContent = "20";//第一個SQL更新表A中的check內容$sql1 = "UPDATE `A` SET `check`='".$check."' WHERE `aid`=".$_GET['id'];//第二個SQL獲取表B中的相關信息$sql2 = "SELECT `B`.`bid`,`b`.`score` FROM `A`,`B` WHERE `A`.`name`=`B`.`name` AND `A`.`aid`=".$_GET['id'];//通過sql2可以得到所要修改的B表中的bid=$bid 和B表中該條記錄的score內容=$score。$newScore = $score.$addContent;//更新表B中數據$sql3 = "UPDATE `B` SET `score`='".$newScore."' WHERE `bid`=".$bid;
公司主營業務:網站建設、網站制作、移動網站開發等業務。幫助企業客戶真正實現互聯網宣傳,提高企業的競爭能力。創新互聯公司是一支青春激揚、勤奮敬業、活力青春激揚、勤奮敬業、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰,讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創新互聯公司推出慶云免費做網站回饋大家。
有啊,只要where后面的條件把握好就行了,把握不好,可能數據就苦逼了,
所有:update
table1
set
num=num+1
條件(num不等于0):update
table1
set
num=num+1
where
num0
MySQL
Update
Set
更新數據
UPDATE
更新
UPDATE
SET
語法用于修改更新數據表中的數據。
語法:
UPDATE
tb_name
SET
column1
=
new_value1,column2
=
new_value2,…
WHERE
definition
該語法將數據表中符合
WHERE
條件的記錄中的
column1
的值更新為
new_value1,column2
的值更新為
new_value2
,以此類推。如果省略
WHERE
條件,則會將表中所有記錄的
column
值進行更新。
例子:
?php
$conn
=
@mysql_connect("localhost","root","root123");
if
(!$conn){
die("連接數據庫失敗:"
.
mysql_error());
}
mysql_select_db("test",
$conn);
mysql_query("set
names
'gbk'");
$sql
=
"UPDATE
user
SET
=
'xiaoming@163.com'
WHERE
username
=
'小明'";
if(mysql_query($sql,$conn)){
echo
"更新數據成功!";
}
else
{
echo
"更新數據失敗:".mysql_error();
}
?
更新前數據:
uid
username
password
regdate
1
admin
b7e591c246d010bb2ccd77d52490c85e
admin@5idev.com
1277992339
2
小明
a193686a53e4de85ee3f2ff0576adf01
xiao@163.com
1278063917
3
Jack
0193686a35e4de85ee3f2ff0567adf49
jack@gmail.com
1278061380
4
小王
e10adc3949ba59abbe56e057f20f883e
12345@163.com
1289632955
例子將
user
表中
username
為
小明
的
修改為
xiaoming@163.com
。
更新后數據:
uid
username
password
regdate
1
admin
b7e591c246d010bb2ccd77d52490c85e
admin@5idev.com
1277992339
2
小明
a193686a53e4de85ee3f2ff0576adf01
xiaoming@163.com
1278063917
3
Jack
0193686a35e4de85ee3f2ff0567adf49
jack@gmail.com
1278061380
4
小王
e10adc3949ba59abbe56e057f20f883e
12345@163.com
1289632955
UPDATE
表達式
UPDATE
語法允許
SET
后面跟表達式。
例子
1
:
UPDATE
article
SET
pv
=
pv+1
WHERE
id
=
123
該例子讓
id
為
123
的文章在被點擊閱讀的時候點擊量加
1
。
例子
2
:
UPDATE
persondata
SET
age
=
age*2,
age
=
age+1
該例子
SET
后面跟了兩個表達式:age
=
age*2(年齡加倍),age
=
age+1(再加
1
)。這種多個表達式的情況,是按照從左往右順序執行的。
不需要,當你insert之后,數據就會存在數據庫里面了。
第二次select時候,會讀到最新的數據,包括剛剛insert的內容。
ps. 如果你用到事務功能的話,就要在insert后commit一下,保證數據寫入。
分享一個我以前寫過的例子,跟這個類似的,希望對你有所啟發。把我的server.php換成你自己的進行數據更新的php文件路徑就可以。如果需要傳遞參數,在url后邊拼接就可以了。
!doctype html
html lang="en"
head
meta charset="UTF-8"
meta name="Generator" content="EditPlus?"
meta name="Author" content=""
meta name="Keywords" content=""
meta name="Description" content=""
titleDocument/title
/head
body
form
select name="number" id="number"
option value="2222222"
2222222
/option
option value="7777777" selected="selected"7777777/option
/select
a onclick="showRoles('test','number');"立即查詢/a
table
tr display="none"
td id="test" height="20" /td
/tr
/table
/form
script
var xmlHttp = null,currentPos = null;
function createXMLHttpRequest()
{
try
{
xmlHttp = new ActiveXObject("MSxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (ox)
{
xmlHttp = null;
}
}
if(!xmlHttp typeof XMLHttpRequest != "undefined")
{
xmlHttp = new XMLHttpRequest();
}
return xmlHttp;
}
function send_request(url)
{
createXMLHttpRequest();
xmlHttp.onreadystatechange = processRequest;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
function processRequest()
{
if(xmlHttp.readyState == 4)
{
if(xmlHttp.status == 200)
{
document.getElementById("test").innerHTML = xmlHttp.responseText;
}
else
{
alert("請求異常。");
}
}
}
function showRoles(obj1,obj2)
{
currentPos = obj1;
document.getElementById(obj1).parentNode.style.display = "";
document.getElementById(obj1).innerHTML = "正在讀取數據……";
send_request("server.php?phoneNum="+document.getElementById(obj2).value+"r="+Math.random());
}
/script
/body
/html
以前我用過querylist插件抓數據,服務器寫和定時器,每天固定時間去運行腳本。朝這個方式試試
高并發下數據的更新,應該 update table xxx set num = num - 1 的方式,這種方式可以保證數據的正確性。
但是會出現 num 為負數的問題,如果庫存為負數,顯然是不合理的。
于是,需要將 num 字段設置為 無符號整型,這樣就不會出現負數了,因為,如果減到負數,就會更新失敗。
但是這種依然會造成很多無用的更新語句的執行,是不合理的。
于是,update table xxx set num = num - 1 where num 0,
這樣當 num 等于0之后就不會去更新數據庫了,減少了很多無用的開銷。
這種方式被稱作“樂觀鎖”
此外,對于搶紅包這種非整數的操作,我們應該轉換為整數的操作。
關于搶購超賣的控制
一般搶購功能是一個相對于正常售賣系統來說獨立的子系統,這樣既可以防止搶購時的高并發影響到正常系統,
也可以做到針對于搶購業務的特殊處理。
在后臺設計一些功能,可以就昂正常的商品加入到搶購活動中并編輯成為搶購商品,寫入到搶購商品表,當然
也可以把搶購商品表寫入redis而不是數據表。并且在原商品表寫入一個同樣的商品(id相同,用于訂單查看,
此商品不可購買)
如果是數據表,為了控制超賣,需要對表進行行鎖,更新的時候帶上 where goods_amount 0。
如果是redis,使用 hincrby 一個負數來減庫存,并且 hincrby 會返回改變后的值,再來判斷返回值是否大于0,
因為redis每個命令都是原子性的,這樣不用鎖表就可控制超賣。
網站題目:php數據表更新 php無刷新更新新數據
新聞來源:http://vcdvsql.cn/article10/dooohdo.html
成都網站建設公司_創新互聯,為您提供網站改版、定制開發、網站制作、外貿建站、用戶體驗、靜態網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯