资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

php在大量数据中搜索 php检索字符串

ThinkPHP关键字搜索(从MySQL数据库中)

提交的时候记得把默认的值去掉  才能判断是否有值..

创新互联公司是一家集网站建设,织金企业网站建设,织金品牌网站建设,网站定制,织金网站建设报价,网络营销,网络优化,织金网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

//这个是把三个搜索关键词作为独立的因子搜索

function search(){

if(isset($_POST['id'])  intval($_POST['id'])0){

$sql="select * from tbl  where id=".intval($_POST['id'])." ";

}

if(isset($_POST['name'])){

$sql.="union select * from tbl where name=".$_POST['name']." ";

}

if(isset($_POST['content'])){

$sql.="union select * from tbl where content like '%".$_POST['content']."%' ";

}

$s = M('search');

$result=$s-query($sql);

}

}

//以下是把三个搜索当作条件进行搜索  有筛选的味道

function search(){

$where="1=1";

if(isset($_POST['content'])){

$where.=" and content like '%$_POST[content]%'";

}

if(isset($_POST['content'])){

$where.=" and name = '$_POST[name ]'";

}

if(isset($_POST['id'])  intval($_POST['id'])0){

$where.=" and id= '$_POST[id]'";

}

if($where != '1=1'){

$sql="select * from tbl $where";

}else{

throw new Exception('没有输入搜索词');

}

$s = M('search');

$result=$s-query($sql);

}

}

PHP 怎样实现随便输入一个字都能搜索全数据库的内容?

目前好像只有指定定表来查询,你可以写个函数。。封装一下

数据库1

select * from 表1

select * from 表2

select * from 表3

……

数据库2

select * from 表1

select * from 表2

select * from 表3

……

然后把多个结果集获取出来。。

这是个思路。。具体你也可以把*改成你要搜索的字段。。

如果不想这么麻烦。。还想要简单一点的话。。我还有一个办法。。

那就是把整个数据库导出成一个.sql或者txt文件。。然后直接用记事本就可以搜索到整个数据库中有相应值的地方。。。然后搜索相应的表就可以了。。

嗯,你要更高级一点可以写个脚本让数据库定时备份下来。。然后搜索的时候直接去搜索这个备份的文件。

在PHP中怎么解决大量数据处理的问题

mysql_query函数查询的方式是查询出全部结果后缓存到内存中,这样就会出现超内存的现象,使用另外一个函数mysql_unbuffered_query可以解决这个问题,mysql_unbuffered_query不会缓存结果集,而是查询出来数据后立马对结果集进行操作,也就是便查询边返回,这样就不会出现超出内存的现象,但是使用mysql_unbuffered_query的是时候不能使用 mysql_num_rows() 和 mysql_data_seek()。并且向 MySQL 发送一条新的 SQL 查询之前,必须提取掉所有未缓存的 SQL 查询所产生的结果行。例如:

使用缓存结果集的代码:

function selecttest()

{

try {

$pdo = new PDO("mysql:host=localhost;dbname=test", 'root', '123456');

// 不使用缓存结果集方式

// $pdo-setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);

$sth = $pdo-prepare('select * from test');

$sth-execute();

echo '最初占用内存大小:' . memory_get_usage() . "\n";

$i = 0;

while ($result = $sth-fetch(PDO::FETCH_ASSOC)) {

$i += 1;

if ($i 10) {

break;

}

sleep(1);

print_r($result);

echo '占用内存大小:' . memory_get_usage() . "\n";

}

} catch (Exception $e) {

echo $e-getMessage();

}

}

执行时将会报超出内存的错误:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 204800000 bytes) in E:\ProgramDevelopment\RuntimeEnvironment\xampp\htdocs\test\test.php on line 56

Call Stack:

0.0005 135392 1. {main}() E:\ProgramDevelopment\RuntimeEnvironment\xampp\htdocs\test\test.php:0

0.0005 135568 2. test-selecttest() E:\ProgramDevelopment\RuntimeEnvironment\xampp\htdocs\test\test.php:85

0.0050 142528 3. PDOStatement-execute() E:\ProgramDevelopment\RuntimeEnvironment\xampp\htdocs\test\test.php:56

将上面代码中的$pdo-setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);一行的注释去掉后将不在缓存结果集,这时运行该函数的结果如下:

最初占用内存大小:144808

Array

(

[id] = 1

[a] = v

[b] = w

[c] = i

)

占用内存大小:145544

Array

(

[id] = 2

[a] = b

[b] = l

[c] = q

)

占用内存大小:145544

Array

(

[id] = 3

[a] = m

[b] = p

[c] = h

)

占用内存大小:145536

Array

(

[id] = 4

[a] = j

[b] = i

[c] = b

)

占用内存大小:145536

可以看到,这时返回一条数据内存占用非常的小,也就700多字节,这样就不会出现超出内存的错误了。


分享文章:php在大量数据中搜索 php检索字符串
当前路径:http://cdkjz.cn/article/doepped.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220