重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
一般我们为了减少数据库链接,取数据是一次取出所有想要的数据然后做循环处理,而不是一个个循环取出
网站建设公司,为您提供网站建设,网站制作,网页设计及定制网站建设服务,专注于企业网站制作,高端网页制作,对VR全景等多个行业拥有丰富的网站建设经验的网站建设公司。专业网站设计,网站优化推广哪家好,专业成都网站推广优化,H5建站,响应式网站。
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "aaaa";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn-connect_error) {
die("连接失败: " . $conn-connect_error);
}
$conn-query('set names utf8');
$sql = "SELECT name FROM xiao ";//这里是查询xiao表的name列的所有数据
$result = $conn-query($sql);
if ($result-num_rows 0) {
// 输出数据
while($row = $result-fetch_assoc()) {
//print_r($row);
echo "name: " . $row["name"]."br";//这里是循环打印
}
} else {
echo "没有查询到数据";
}
$conn-close();
根据你的语义描述可以用这样的方法来查询
$arr = ["1111111","12345","qwe"];
$result = [];
foreach ($arr as $val){
$result[] = $tail_fibers-distinct ( true )-where("type='$val'")-select();
}
不知道你用的是哪个SQL组件,但是大体都会提供类似 -whereIn('type',$arr) 这样的方法,等于直接用SQL的IN语句进行多个值查询,效率更高
SQL IN 操作符
您好,可参考如下思路,然后结合自己的业务逻辑即可:
?php
//首先链接数据库
$conn = mysql_connect('主机名','数据库登陆用户名','数据库登陆密码') or die('链接数据库失败');
//选择数据库
mysql_select_db( 'test',$conn );
//假设test数据库中有文章表,article,表有字段 id,title,create_time 那么可采用如下代码循环读出里面数据
//进行SQL查询-查询article中的数据并按照id倒序排列
$sql = 'SELECT *FROM article ORDER BY id DESC';
//获取执行结果
$result = mysql_query( $sql,$conn );
if( !$result ) die( '执行SQL语句失败' );
//循环读出结果集中的数据
while( $row = mysql_fetch_assoc( $result ) )
{
//输出数据
echo $row['id'].'--'.$row['title'].'--'.$row['create_time'].'br/';
}
//如果test中有三条数据,比如下列数据
//id title create_time
//1 文章标题1 2014/10/31 14:20
//2 文章标题2 2014/11/01 15:12
//3 文章标题3 2014/11/03 12:10
//那么执行代码后,网页应显示如下:
//3--文章标题3--2014/11/03 12:10
//2--文章标题2--2014/11/01 15:12
//1--文章标题1--2014/10/31 14:20
?
。。。。。。
这个函数???令人很迷惑
它的逻辑是什么呢?为什么是先判断 $this-error,而不是query后再判断呢?
还有以下一句;
return odbc_exec($this-link,$sql) or $this-display_error($sql);
目的是想如果odbc_exec 成功则返回结果集,否则就输出错误吗?但事实上是不对的。等价于以下:
return (odbc_exec($this-link,$sql) or $this-display_error($sql));
显然,每次都display_error了,不管是否成功
这是函数odbc_fetch_row的定义:
odbc_fetch_row
(PHP 4, PHP 5)
odbc_fetch_row — Fetch a row
Description
bool odbc_fetch_row ( resource $result_id [, int $row_number] )
If odbc_fetch_row() was successful (there was a row), TRUE is returned. If there are no more rows, FALSE is returned.
odbc_fetch_row() fetches a row of the data that was returned by odbc_do() / odbc_exec(). After odbc_fetch_row() is called, the fields of that row can be accessed with odbc_result().
If row_number is not specified, odbc_fetch_row() will try to fetch the next row in the result set. Calls to odbc_fetch_row() with and without row_number can be mixed.
To step through the result more than once, you can call odbc_fetch_row() with row_number 1, and then continue doing odbc_fetch_row() without row_number to review the result. If a driver doesn't support fetching rows by number, the row_number parameter is ignored.
可以看到,odbc_fetch_row并不像其它函数例如mysql_fetch_row那样返回一个数组,而是返回一个布尔型的变量,然后在用odbc_result获取指定字段的值。
修改如下:
?
$databasepath="database.mdb";//写成常量,define('databasepath',"database.mdb");赋值给变量$databasepath=databasepath;
$dbusername="";
$dbpassword="";
$access=new Access($databasepath,$dbusername,$dbpassword,true);
$conn=$access-query("select * from admin");
while (odbc_fetch_row($conn)) {
?
tr
td class="td1"?=odbc_result($conn, "name")?/td
/tr
tr
td class="td1"?=odbc_result($conn, "area")?/td
/tr
?php
}
$access-close();
?
请下载PHP参考手册
foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。有两种语法:
foreach
(array_expression
as
$value)
statement
foreach
(array_expression
as
$key
=
$value)
statement
第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。
第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key。
范例:
$a = array( "one" = 1, "two" = 2, "three" = 3, "seventeen" = 17);foreach ($a as $k = $v) { echo "\$a[$k] = $v.\n";}
你用网页的方式,让人点击,服务器采集,简直是弱爆了。每个人的点击循环1000次,来个100人同时点,你要用的是普通的虚拟机就不行了。
最好是换种方式实现,不要通过网页进行采集。
可以非常简单的在数据库的表,创建一个采集队列,后台执行一个crontab的计划任务,去完成队列里的采集任务。