網(wǎng)頁一般是單向主動(dòng)短鏈接,實(shí)時(shí)更新實(shí)在有些不便,即使一方掉線,另一方也不能及時(shí)感知。一般所謂的實(shí)時(shí)刷新,大多采用定時(shí)刷新(輪詢),或長輪詢的方式做,ajax用于更新數(shù)據(jù)確實(shí)是比較簡單方便的。
成都創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、聊城網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁面制作、商城開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為聊城等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
輪詢你就settimeout,長輪詢你就每次接收數(shù)據(jù)成功后,再來一次長輪詢。但你鏈接別人的數(shù)據(jù),了解一下供應(yīng)商的刷新機(jī)制、周期再做考慮。
當(dāng)然這些都是偽實(shí)時(shí),真的實(shí)時(shí)用http協(xié)議是不合適的,你得用flash插件做。而你用的是api供應(yīng)商的東西,這條路就基本走不通了。
PHP操作MongoDB數(shù)據(jù)庫的簡單示例。
Mongodb的常用操作
參看手冊,php官方的
也可以參看mongodb官方的教程。
一,?Mognodb數(shù)據(jù)庫連接
1)、默認(rèn)格式
復(fù)制代碼?代碼示例:
$m?=?new?Mongo();
//這里采用默認(rèn)連接本機(jī)的27017端口,當(dāng)然也可以連接遠(yuǎn)程主機(jī)如??192.168.0.4:27017,如果端口是27017,端口可以省略。
2)、標(biāo)準(zhǔn)連接
$m?=?new?Mongo(“mongodb://${username}:${password}@localhost”);
實(shí)例:
復(fù)制代碼?代碼示例:
$m?=?new?Mongo(“mongodb://127.0.0.1:27017/admin:admin”);
數(shù)據(jù)庫的用戶名和密碼都是admin
數(shù)據(jù)庫操作:
1)、插入數(shù)據(jù):
復(fù)制代碼?代碼示例:
?php
//這里采用默認(rèn)連接本機(jī)的27017端口,當(dāng)然你也可以連接遠(yuǎn)程主機(jī)如192.168.0.4:27017
//如果端口是27017,端口可以省略
$m?=?new?Mongo("mongodb://127.0.0.1:27017/admin:admin");
//選擇comedy數(shù)據(jù)庫,如果以前沒該數(shù)據(jù)庫會(huì)自動(dòng)創(chuàng)建,也可以用$m-selectDB("comedy");
$db?=?$m-comedy;
//選擇comedy里面的collection集合,相當(dāng)于RDBMS里面的表,也可以使用
$collection?=?$db-collection;
$db-selectCollection("collection");
/*********添加一個(gè)元素**************/
$obj?=?array("title"?=?"php1",?"author"?=?"Bill?Watterson");
//將$obj?添加到$collection?集合中
$collection-insert($obj);
/*********添加另一個(gè)元素**************/
$obj?=?array("title"?=?"huaibei",?"online"?=?true);
$collection-insert($obj);
//$query?=?array("title"?=?"huaibei");
$query?=?array(?"_id"?=?$obj['_id']?);
$cursor?=?$collection-find($query);
//遍歷所有集合中的文檔
foreach?($cursor?as?$obj)?{
echo?$obj["title"]?.?"\n";
echo?$obj["_id"]?.?"\n";
}
//斷開MongoDB連接
$m-close();
2)、帶條件的查詢
查詢?title為huaibei的字段
1?$query?=?array(?”title”?=?”huaibei”?);
2?$cursor?=?$collection-find(?$query?);??????//?在$collectio集合中查找滿足$query的文檔
常用的SQL轉(zhuǎn)化為mongodb的條件
復(fù)制代碼?代碼示例:
mysql:?id?=?123
mongo:?array(‘id’=123)
mysql:?name?link?’%bar%’
mongo:?array(‘name’?=?new?MongoRegex(‘/.*bar.*/i’))
mysql:?where?id??10
mongo:?array(‘id’?=?array(‘$gt’?=?10))
mysql:?where?id?=?10
mongo:?array(‘id’?=?array(‘$gte’?=?10))
mysql:?where?id??10
mongo:?array(‘id’?=?array(‘$lt’?=?10))
mysql:?where?id?=?10
mongo:?array(‘id’?=?array(‘$lte’?=?10))
mysql:?where?id??1?and?id??10
mongo:?array(‘id’?=?array(‘$gt’?=?1,’$lt’?=?10))
mysql:?where?id??10
mongo:?array(‘id’?=?array(‘$ne’?=?10))
mysql:?where?id?in(123)
mongo:?array(‘id’?=?array(‘$in’?=?array(1,2,3)))
mysql:?where?id?not?in(123)
mongo:?array(‘id’?=?array(‘$nin’?=?array(1,2,3)))
mysql:?where?id?=?2?or?id?=?9
mongo:?array(‘id’?=?array(‘$or’?=?array(array(‘id’=2),array(‘id’=9))))
mysql:?order?by?name?asc
mongo:?array(‘sort’=array(‘name’=1))
mysql:?order?by?name?desc
mongo:?array(‘sort’=array(‘name’=-1))
mysql:?limit?0,2
mongo:?array(‘limit’=array(‘offset’=0,’rows’=2))
mysql:?select?name,email
mongo:?array(‘name’,'email’)
mysql:?select?count(name)
mongo:?array(‘COUNT’)?//注意:COUNT為大寫
更詳細(xì)的轉(zhuǎn)換參考
注意事項(xiàng):
查詢時(shí),每個(gè)Object插入時(shí)都會(huì)自動(dòng)生成一個(gè)獨(dú)特的_id,它相當(dāng)于RDBMS中的主鍵,用于查詢時(shí)非常方便?(_id每一都不同,很像自動(dòng)增加的id)
例如:
復(fù)制代碼?代碼示例:
?php
$param?=?array("name"?=?"joe");
$collection-insert($param);
$joe?=?$collection-findOne(array("_id"?=?$param['_id']));
print_R($joe);
$m-close();
返回結(jié)果:Array?(?[_id]?=?MongoId?Object?(?[$id]?=?4fd30e21870da83416000002?)?[name]?=?joe?)
更改字段值:
復(fù)制代碼?代碼示例:
?php
$sign?=?array("title"?=?'php1');
$param?=?array("title"?=?'php1','author'='test');
$joe?=?$collection-update($sign,?$param);
刪除一個(gè)數(shù)據(jù)庫:
復(fù)制代碼?代碼示例:
$m?-?dropDB(“comedy”);
列出所有可用數(shù)據(jù)庫:
復(fù)制代碼?代碼示例:
$m-listDBs();???//無返回值
附,mongodb常用的數(shù)據(jù)庫方法
MongoDB中有用的函數(shù):
創(chuàng)建一個(gè)MongoDB對象
復(fù)制代碼?代碼示例:
?php
$mo?=?new?Mongo();
$db?=?new?MongoDB($mo,’dbname’);//通過創(chuàng)建方式獲得一個(gè)MongoDB對象
刪除當(dāng)前DB
復(fù)制代碼?代碼示例:
?php
$db?=?$mo-dbname;
$db-drop();
獲得當(dāng)前數(shù)據(jù)庫名
復(fù)制代碼?代碼示例:
?php
$db?=?$mo-dbname;
$db-_tostring();
選擇想要的collection:
復(fù)制代碼?代碼示例:
A:
$mo?=?new?Mongo();
$coll?=?$mo-dbname-collname;//獲得一個(gè)collection對象
B:
$db?=?$mo-selectDB(’dbname’);
$coll?=?$db-collname;
C:
$db?=?$mo-dbname;
$coll?=?$db-collname;
D:
$db?=?$mo-dbname;
$coll?=?$db-selectCollectoin(’collname’);//獲得一個(gè)collection對象
插入數(shù)據(jù)(MongoCollection對象):
MongoCollection::insert(array?$a,array?$options)
array?$a?要插入的數(shù)組
array?$options?選項(xiàng)
safe?是否返回操作結(jié)果信息
fsync?是否直接插入到物理硬盤
例子:
復(fù)制代碼?代碼示例:
$coll?=?$mo-db-foo;
$a?=?array(’a’=’b’);
$options?=?array(’safe’=true);
$rs??=$coll-insert($a,$options);
$rs為一個(gè)array型的數(shù)組,包含操作信息
刪除數(shù)據(jù)庫中的記錄(MongoCollection對象):
MongoCollection::remove(array?$criteria,array?$options)
array?$criteria??條件
array?$options?選項(xiàng)
safe?是否返回操作結(jié)果
fsync?是否是直接影響到物理硬盤
justOne?是否只影響一條記錄
例子:
復(fù)制代碼?代碼示例:
$coll?=?$mo-db-coll;
$c?=?array(’a’=1,’s’=array(’$lt’=100));
$options?=?array(’safe’=true);
$rs?=?$coll-remove($c,$options);
$rs為一個(gè)array型的數(shù)組,包含操作信息
更新數(shù)據(jù)庫中的記錄(MongoCollection對象):
MongoCollection::update(array?$criceria,array?$newobj,array?$options)
array?$criteria??條件
array?$newobj?要更新的內(nèi)容
array?$options?選項(xiàng)
safe?是否返回操作結(jié)果
fsync?是否是直接影響到物理硬盤
upsert?是否沒有匹配數(shù)據(jù)就添加一條新的
multiple?是否影響所有符合條件的記錄,默認(rèn)只影響一條
例子:
復(fù)制代碼?代碼示例:
$coll?=?$mo-db-coll;
$c?=?array(’a’=1,’s’=array(’$lt’=100));
$newobj?=?array(’e’=’f’,’x’=’y’);
$options?=?array(’safe’=true,’multiple’=true);
$rs?=?$coll-remove($c,$newobj,$options);
$rs為一個(gè)array型的數(shù)組,包含操作信息
查詢collection獲得單條記錄(MongoCollection類):
array?MongoCollection::findOne(array?$query,array?$fields)
array?$query?條件
array?$fields?要獲得的字段
例子:
復(fù)制代碼?代碼示例:
$coll?=?$mo-db-coll;
$query?=?array(’s’=array(’$lt’=100));
$fields?=?array(’a’=true,’b’=true);
$rs?=?$coll-findOne($query,$fields);
如果有結(jié)果就返回一個(gè)array,如果沒有結(jié)果就返回NULL
查詢collection獲得多條記錄(MongoCollection類):
MongoCursor?MongoCollection::find(array?$query,array?$fields)
array?$query?條件
array?$fields?要獲得的字段
例子:
復(fù)制代碼?代碼示例:
$coll?=?$mo-db-coll;
$query?=?array(’s’=array(’$lt’=100));
$fields?=?array(’a’=true,’b’=true);
$cursor?=?$coll-find($query,$fields);
//排序
$cursor-sort(array(‘字段’=-1));(-1倒序,1正序)
//跳過部分記錄
$cursor-skip(100);跳過100行
//只顯示部分記錄
$cursor-limit(100);只顯示100行
返回一個(gè)游標(biāo)記錄對象MongoCursor。
針對游標(biāo)對象MongoCursor的操作(MongoCursor類):
循環(huán)或結(jié)果記錄:
復(fù)制代碼?代碼示例:
$cursor?=?$coll-find($query,$fields);
while($cursor-hasNext()){
$r?=?$cursor-getNext();
var_dump($r);
}
或者
$cursor?=?$coll-find($query,$fields);
foreache($cursor?as?$k=$v){
var_dump($v);
}
或者
$cursor?=?$coll-find($query,$fields);
$array=?iterator_to_array($cursor);
//經(jīng)過測試,一個(gè)很小的問題,只是你的sql語句寫錯(cuò)了。
include_once?'cnn.php';
mysql_query("SET?NAMES?'gbk'");//解決漢字?
$result?=?mysql_query?(?"select?*?from?univ_basic_info"?);
while?(?$row?=?mysql_fetch_array?(?$result?)?)?{
$str1?=?strip_tags?($row['univ_kind']);
var_dump($str1);
$i=?$row['univ_id'];
mysql_query("UPDATE?univ_basic_info?SET?univ_kind='$str1'?WHERE?'univ_id'=$i");?
//注意此sql語句,univ_kind??不應(yīng)該有引號(hào),而變量$str1則應(yīng)該帶引號(hào)
//你的錯(cuò)誤就在于此
}
有兩種實(shí)現(xiàn)方法:
1、你可以用PHP服務(wù)器推技術(shù),當(dāng)數(shù)據(jù)發(fā)生變化時(shí),主動(dòng)推送到頁面顯示。相關(guān)技術(shù)可以參考文檔。百度也很多。
2、你可以用Javascript,每過一秒鐘,使用Ajax獲取數(shù)據(jù),一秒鐘刷新一次,也可以實(shí)現(xiàn)的。
第一種我也不會(huì)。第二種相信你可以的。
while的話是循環(huán),你用了只會(huì)一行行加
update 表名 set 列名=值 where 條件 這是修改符合條件的列
update 表名 set 列名=值 修改全部列
mysql_connect(連接配置)。。。。
mysql_query(sql語句);
有啊,只要where后面的條件把握好就行了,把握不好,可能數(shù)據(jù)就苦逼了,
所有:update
table1
set
num=num+1
條件(num不等于0):update
table1
set
num=num+1
where
num0
分享標(biāo)題:php如何更新某一列數(shù)據(jù),php更新數(shù)據(jù)庫數(shù)據(jù)
網(wǎng)頁鏈接:http://jinyejixie.com/article2/hopcoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、做網(wǎng)站、建站公司、網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、微信公眾號(hào)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)