重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
网页一般是单向主动短链接,实时更新实在有些不便,即使一方掉线,另一方也不能及时感知。一般所谓的实时刷新,大多采用定时刷新(轮询),或长轮询的方式做,ajax用于更新数据确实是比较简单方便的。
成都创新互联专注于企业全网营销推广、网站重做改版、聊城网站定制设计、自适应品牌网站建设、H5页面制作、商城开发、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为聊城等各大城市提供网站开发制作服务。
轮询你就settimeout,长轮询你就每次接收数据成功后,再来一次长轮询。但你链接别人的数据,了解一下供应商的刷新机制、周期再做考虑。
当然这些都是伪实时,真的实时用http协议是不合适的,你得用flash插件做。而你用的是api供应商的东西,这条路就基本走不通了。
PHP操作MongoDB数据库的简单示例。
Mongodb的常用操作
参看手册,php官方的
也可以参看mongodb官方的教程。
一, Mognodb数据库连接
1)、默认格式
复制代码 代码示例:
$m = new Mongo();
//这里采用默认连接本机的27017端口,当然也可以连接远程主机如 192.168.0.4:27017,如果端口是27017,端口可以省略。
2)、标准连接
$m = new Mongo(“mongodb://${username}:${password}@localhost”);
实例:
复制代码 代码示例:
$m = new Mongo(“mongodb://127.0.0.1:27017/admin:admin”);
数据库的用户名和密码都是admin
数据库操作:
1)、插入数据:
复制代码 代码示例:
?php
//这里采用默认连接本机的27017端口,当然你也可以连接远程主机如192.168.0.4:27017
//如果端口是27017,端口可以省略
$m = new Mongo("mongodb://127.0.0.1:27017/admin:admin");
//选择comedy数据库,如果以前没该数据库会自动创建,也可以用$m-selectDB("comedy");
$db = $m-comedy;
//选择comedy里面的collection集合,相当于RDBMS里面的表,也可以使用
$collection = $db-collection;
$db-selectCollection("collection");
/*********添加一个元素**************/
$obj = array("title" = "php1", "author" = "Bill Watterson");
//将$obj 添加到$collection 集合中
$collection-insert($obj);
/*********添加另一个元素**************/
$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转化为mongodb的条件
复制代码 代码示例:
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为大写
更详细的转换参考
注意事项:
查询时,每个Object插入时都会自动生成一个独特的_id,它相当于RDBMS中的主键,用于查询时非常方便 (_id每一都不同,很像自动增加的id)
例如:
复制代码 代码示例:
?php
$param = array("name" = "joe");
$collection-insert($param);
$joe = $collection-findOne(array("_id" = $param['_id']));
print_R($joe);
$m-close();
返回结果:Array ( [_id] = MongoId Object ( [$id] = 4fd30e21870da83416000002 ) [name] = joe )
更改字段值:
复制代码 代码示例:
?php
$sign = array("title" = 'php1');
$param = array("title" = 'php1','author'='test');
$joe = $collection-update($sign, $param);
删除一个数据库:
复制代码 代码示例:
$m - dropDB(“comedy”);
列出所有可用数据库:
复制代码 代码示例:
$m-listDBs(); //无返回值
附,mongodb常用的数据库方法
MongoDB中有用的函数:
创建一个MongoDB对象
复制代码 代码示例:
?php
$mo = new Mongo();
$db = new MongoDB($mo,’dbname’);//通过创建方式获得一个MongoDB对象
删除当前DB
复制代码 代码示例:
?php
$db = $mo-dbname;
$db-drop();
获得当前数据库名
复制代码 代码示例:
?php
$db = $mo-dbname;
$db-_tostring();
选择想要的collection:
复制代码 代码示例:
A:
$mo = new Mongo();
$coll = $mo-dbname-collname;//获得一个collection对象
B:
$db = $mo-selectDB(’dbname’);
$coll = $db-collname;
C:
$db = $mo-dbname;
$coll = $db-collname;
D:
$db = $mo-dbname;
$coll = $db-selectCollectoin(’collname’);//获得一个collection对象
插入数据(MongoCollection对象):
MongoCollection::insert(array $a,array $options)
array $a 要插入的数组
array $options 选项
safe 是否返回操作结果信息
fsync 是否直接插入到物理硬盘
例子:
复制代码 代码示例:
$coll = $mo-db-foo;
$a = array(’a’=’b’);
$options = array(’safe’=true);
$rs =$coll-insert($a,$options);
$rs为一个array型的数组,包含操作信息
删除数据库中的记录(MongoCollection对象):
MongoCollection::remove(array $criteria,array $options)
array $criteria 条件
array $options 选项
safe 是否返回操作结果
fsync 是否是直接影响到物理硬盘
justOne 是否只影响一条记录
例子:
复制代码 代码示例:
$coll = $mo-db-coll;
$c = array(’a’=1,’s’=array(’$lt’=100));
$options = array(’safe’=true);
$rs = $coll-remove($c,$options);
$rs为一个array型的数组,包含操作信息
更新数据库中的记录(MongoCollection对象):
MongoCollection::update(array $criceria,array $newobj,array $options)
array $criteria 条件
array $newobj 要更新的内容
array $options 选项
safe 是否返回操作结果
fsync 是否是直接影响到物理硬盘
upsert 是否没有匹配数据就添加一条新的
multiple 是否影响所有符合条件的记录,默认只影响一条
例子:
复制代码 代码示例:
$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为一个array型的数组,包含操作信息
查询collection获得单条记录(MongoCollection类):
array MongoCollection::findOne(array $query,array $fields)
array $query 条件
array $fields 要获得的字段
例子:
复制代码 代码示例:
$coll = $mo-db-coll;
$query = array(’s’=array(’$lt’=100));
$fields = array(’a’=true,’b’=true);
$rs = $coll-findOne($query,$fields);
如果有结果就返回一个array,如果没有结果就返回NULL
查询collection获得多条记录(MongoCollection类):
MongoCursor MongoCollection::find(array $query,array $fields)
array $query 条件
array $fields 要获得的字段
例子:
复制代码 代码示例:
$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行
返回一个游标记录对象MongoCursor。
针对游标对象MongoCursor的操作(MongoCursor类):
循环或结果记录:
复制代码 代码示例:
$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);
//经过测试,一个很小的问题,只是你的sql语句写错了。
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 不应该有引号,而变量$str1则应该带引号
//你的错误就在于此
}
有两种实现方法:
1、你可以用PHP服务器推技术,当数据发生变化时,主动推送到页面显示。相关技术可以参考文档。百度也很多。
2、你可以用Javascript,每过一秒钟,使用Ajax获取数据,一秒钟刷新一次,也可以实现的。
第一种我也不会。第二种相信你可以的。
while的话是循环,你用了只会一行行加
update 表名 set 列名=值 where 条件 这是修改符合条件的列
update 表名 set 列名=值 修改全部列
mysql_connect(连接配置)。。。。
mysql_query(sql语句);
有啊,只要where后面的条件把握好就行了,把握不好,可能数据就苦逼了,
所有:update
table1
set
num=num+1
条件(num不等于0):update
table1
set
num=num+1
where
num0