php7查看数据表 phpstudy查看数据库( 三 )


7.while (!empty($links)) {
8.$reads = $links;
9.$errors = $reject = [];
10.if (!mysqli_poll($reads, $errors, $reject, null)) {
11.continue;
12.}
13.foreach ($reads as $read) {
14.$idx = array_search($read, $links, true);
15.$allResult[$idx] = [];
16.$result = $read-reap_async_query();
17.while ($row = $result-fetch_row()) {
18.$allResult[$idx][] = $row;
19.}
20.$read-close();
21.unset($links[$idx]);
22.}
23. }
解释下这段代码的含义:
2~5行 , 同时发起10个MySQL连接,并发出查询
注意query() 的第二个参数带上了 MYSQLI_ASYNC 表示非阻塞查询
10行,使用mysqli_poll 轮询10个连接的查询有无返回
mysqli_poll 的第一个参数$reads是个数组,包含需要轮询那些连接 。mysqli_poll 执行完后 , 会改写$reads , 改写后$reads包含的是那些已经有数据返回连接 。
mysqli_poll的第四个参数,控制的是轮询的等待时间,单位是“秒” 。如果像本例当中设置为null,那么mysqli_poll轮询是阻塞的:只有监听的连接中,任意一个连接有数据返回了,mysqli_poll才会返回 。如果等待时间设置为0,那么每次执行mysqli_poll会立即返回,外层的while会频繁循环 。
第11~19行 , 遍历已经有数据返回的连接
reap_async_query和普通query一样,返回的是mysqli_result,可以一行行fetch数据
20~21行,对于已经获得了数据的连接,下次mysqli_poll就不需要再轮询这个连接了,所以关闭连接,并从$links数组删除这个连接
当所有的连接都返回了数据,$links数组空了,while循环也就终止了 。
使用并行查询的方式,可以大大缩短处理HTTP请求的时间,假设本例中的10个SQL查询,每个需要执行1秒 。因为是并行,处理所有的查询 , 也只需要1秒左右 。
PHP+mysql 查询 今天 , 昨天,最近7天的数据?今天
select * from 表名 where mytime(时间字段名) = mytime(now());
昨天
select * from 表名 where mytime( now( ) ) - mytime( 时间字段名) = 1
7天
select * from表名 where date_sub(cur(), interval(7 day = date(时间字段名)
刚学php的小白,问一下这个查询该怎么写思路:
先查出上述的二维数据,然后遍历查出的二维数组,根据每条的成员id查询出user_name,添加到查询出的二维数组中 , 最后在渲染输出
示例:
//获取数据库实例
$dsn = 'mysql:dbname=test;host=127.0.0.1';
$user = 'root';
$password = '';
try {
$db = new PDO($dsn, $user, $password,array(PDO::MYSQL_ATTR_INIT_COMMAND = "set names utf8"));
} catch (PDOException $e) {
echo 'Connection failed: ' . $e-getMessage();
}
//得到的二维数组
$data=https://www.04ip.com/post/[
[
'id'='1',
'range'='所在部门以及下级部门',
'功能项'='72',
],
[
'id'='1',
'range'='所在部门以及下级部门',
'功能项'='78,72',
],
[
'id'='10,7',
'range'='所在部门以及下级部门',
'功能项'='72,82',
],
];
//遍历
foreach($data as $item){
$sth = $db-query('select user_name from user where member_id in ('.$item['id'].')');
$user = $sth-fetchAll(PDO::FETCH_ASSOC);
$sth-debugDumpParams();
$item['member_name'] = implode(',',array_column($user,'user_name'));
}
unset($item);
var_dump($data);
输出
array(3) {
[0]=
array(4) {
["id"]=
string(1) "1"
["range"]=
string(30) "所在部门以及下级部门"
["功能项"]=
string(2) "72"
["member_name"]=
string(6) "李明"
}
[1]=
array(4) {

推荐阅读