目录
PHP+Mysql实现多关键字与多字段生成SQL语句的函数,mysqlsql
php+mysql怎实现无限级别分类,数据库怎设计?一条SQL语句读出数据然后生成数组
mysql中的sql语句存在关键字怎办
首页 php教程 php手册 PHP+Mysql实现多关键字与多字段生成SQL语句的函数,mysqlsql

PHP+Mysql实现多关键字与多字段生成SQL语句的函数,mysqlsql

Jun 13, 2016 am 09:22 AM
mysql php sql语句

PHP+Mysql实现多关键字与多字段生成SQL语句的函数,mysqlsql

本文实例讲述了PHP+Mysql实现多关键字与多字段生成SQL语句的函数的方法。分享给大家供大家参考。具体实现方法如下:

先看实例:

复制代码 代码如下:

$keyword="1 2 3";
echo $sql=search($keyword,"enter_gongyin_pic","a+b+c"); //函数生成,没有LIMIT,没有ORDER BY


生成:

复制代码 代码如下:

SELECT * FROM `enter_gongyin_pic` WHERE `a` LIKE '%1%' OR `a` LIKE '%2%' OR `a` LIKE '%3%' OR `b` LIKE '%1%' OR `b` LIKE '%2%' OR `b` LIKE '%3%' OR `c` LIKE '%1%' OR `c` LIKE '%2%' OR `c` LIKE '%3%'


$keyword由POST或者GET获得.按空格分开 可以多字段去查找.

实现函数如下:

复制代码 代码如下:

function search($keyword,$table,$field) 

//======================================================== 
 
//形参说明: 
//keyword为关键字,如“北京首都 方向 火车”。带有空格或者不带 
//table为表名,如enter_gongyin_pic。 
//field为字段组合,如查找一个字段就写好 name  
//如查找两个以上就用 name+picdir 
//======================================================== 
//首先确定field 
$new_field=explode("+",$field); //按+剥离 
$field_count=count($new_field); //得到的结果数量 
 
 
$newstring=explode(" ",$keyword); //按空格剥离 
$newstring2=array(); 
   //把字符串去掉没有用的空格叔祖元素 
   $i=0; 
   foreach ($newstring as $key => $value) { 
   if($value!="") 
   { 
   $newstring2[$i]=$value; 
   $i++; 
   } 
   } 
//把字符串去掉没有用的空格叔祖元素, 
         
$result_count=count($newstring2); //得到的结果数量 
 
//下面生成SQL语句 
 
 
//********************** if($field_count==1) //找1个字段 START **************************** 
if($field_count==1) //找1个字段 

if($result_count==1) //判断如果是一个关键段 
   { 
   $newstring_search=$newstring2[0]; 
$sql="SELECT *  
FROM `$table`  
WHERE `".$new_field[0]."` LIKE '%$newstring_search%'"; 
   } 
      
   if($result_count>1) //判断如果是多个关键段 
   { 
 
$sql="SELECT *  
FROM `$table`  
WHERE "; 
$sql_add=""; 
foreach ($newstring2 as $key => $value) 

  if($key==0) 
   { 
   $sql_add=$sql_add."`".$new_field[0]."` LIKE '%".$value."%'"; 
   } 
   else 
   { 
   $sql_add=$sql_add." OR `".$new_field[0]."` LIKE '%".$value."%'"; 
     
        } 
         
          } 
   
$sql=$sql.$sql_add; 

 

 
//********************** if($field_count==1) //找1个字段 END **************************** 
 
 
//********************** if($field_count>1) //找多个字段 START **************************** 
if($field_count>1) //找多个字段,这个时候$new_field是一个数组。拥有多个字段 

if($result_count==1) //判断如果是一个关键段 

        $newstring_search=$newstring2[0]; //$newstring_search是关键字 
        $sql="SELECT *  
        FROM `$table`  
        WHERE "; 
        $sql_add="";//新增加字段 
        foreach ($new_field as $key => $value) 
        { 
                        if($key==0) 
                        { 
                        $sql_add=$sql_add."`".$value."` LIKE '%".$newstring_search."%'"; 
                        } 
                        else 
                        { 
                        $sql_add=$sql_add." OR `".$value."` LIKE '%".$newstring_search."%'"; 
                        } 
        } 
        $sql=$sql.$sql_add; 

if($result_count>1) //判断如果是多个关键段(多个关键字)========================== 

$sql="SELECT *  
FROM `$table`  
WHERE "; 
$sql_add="";//新增加字段 
foreach ($new_field as $key => $value) 

  if($key==0) //遇到$new_field[0]时候 例:`a` LIKE '%1%' OR `a` LIKE '%2%' OR `a` LIKE '%3%' 
   { //嵌套foreach 
     foreach ($newstring2 as $key2 => $value2) 
      { 
                  if($key2==0) 
                   { 
                        $sql_add=$sql_add."`".$value."` LIKE '%".$value2."%'"; 
                   } 
                   else 
                   { 
                   $sql_add=$sql_add." OR `".$value."` LIKE '%".$value2."%'"; 
                   } 
        } 
    //嵌套foreach 
   } 
   else  
   //(如果是多字段的比如查name+picdir表)开始FOREACH连续循环,每次执行ELSE $new_field[1] $new_field[2] $new_field[3]。 
   //对应的值为$value 
  { 
   //嵌套foreach(多字段与多关键字) 
   foreach ($newstring2 as $key2 => $value2) 
      { 
                  if($key2==0) 
                   { 
                        $sql_add=$sql_add." OR `".$value."` LIKE '%".$value2."%'"; 
                   } 
                   else 
                   { 
                   $sql_add=$sql_add." OR `".$value."` LIKE '%".$value2."%'"; 
                   } 
           } 
   //嵌套foreach 
   } 
         
}//foreach ($new_field as $key => $value)结束 
$sql=$sql.$sql_add; 
}//if($result_count>1)结束 
}//if($field_count>1) 结束 
//********************** if($field_count>1) //找多个字段 END **************************** 
return $sql; 
}

希望本文所述对大家的PHP程序设计有所帮助。

php+mysql怎实现无限级别分类,数据库怎设计?一条SQL语句读出数据然后生成数组

你说的无限级别,不是树状无限吧,只是说类别的个数无限,级别只有两级,对吧

一般大类不会很多,可以使用一个字符来表示,例如用A~Z进行编码,A为新闻、B为体育、……

新闻的类别可以设置为字符类型,第一位表示大累,后面的表示小类,例如A001国际新闻、A002国内新闻、B001篮球、……

建立两个表,一个是新闻大类表,两个字段:大类代码、大类名称;另外一个类别表,也是两个字段:类别代码、类别名称

在你的新闻表里面,只使用一个字符类型的类别字段就可以了。

要产生你那样的树状目录输出,起始非常简单,只要你的SQL语句按照类别进行排序就行了,程序检测每一条数据是否和上面的类别相同,以确定前面是显示+还是|,仅此而已。
 

mysql中的sql语句存在关键字怎办

insert into tb_test (`use`) values ('test');

用这个点,就是上边数字键1左边的那个
 

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1666
14
CakePHP 教程
1425
52
Laravel 教程
1324
25
PHP教程
1272
29
C# 教程
1251
24
在MySQL中解释外键的目的。 在MySQL中解释外键的目的。 Apr 25, 2025 am 12:17 AM

在MySQL中,外键的作用是建立表与表之间的关系,确保数据的一致性和完整性。外键通过引用完整性检查和级联操作维护数据的有效性,使用时需注意性能优化和避免常见错误。

比较和对比Mysql和Mariadb。 比较和对比Mysql和Mariadb。 Apr 26, 2025 am 12:08 AM

MySQL和MariaDB的主要区别在于性能、功能和许可证:1.MySQL由Oracle开发,MariaDB是其分支。2.MariaDB在高负载环境中性能可能更好。3.MariaDB提供了更多的存储引擎和功能。4.MySQL采用双重许可证,MariaDB完全开源。选择时应考虑现有基础设施、性能需求、功能需求和许可证成本。

如果session_start()被多次调用会发生什么? 如果session_start()被多次调用会发生什么? Apr 25, 2025 am 12:06 AM

多次调用session_start()会导致警告信息和可能的数据覆盖。1)PHP会发出警告,提示session已启动。2)可能导致session数据意外覆盖。3)使用session_status()检查session状态,避免重复调用。

MySQL:数据库,PHPMYADMIN:管理接口 MySQL:数据库,PHPMYADMIN:管理接口 Apr 29, 2025 am 12:44 AM

MySQL和phpMyAdmin可以通过以下步骤进行有效管理:1.创建和删除数据库:在phpMyAdmin中点击几下即可完成。2.管理表:可以创建表、修改结构、添加索引。3.数据操作:支持插入、更新、删除数据和执行SQL查询。4.导入导出数据:支持SQL、CSV、XML等格式。5.优化和监控:使用OPTIMIZETABLE命令优化表,并利用查询分析器和监控工具解决性能问题。

作曲家:通过AI的帮助开发PHP 作曲家:通过AI的帮助开发PHP Apr 29, 2025 am 12:27 AM

AI可以帮助优化Composer的使用,具体方法包括:1.依赖管理优化:AI分析依赖关系,建议最佳版本组合,减少冲突。2.自动化代码生成:AI生成符合最佳实践的composer.json文件。3.代码质量提升:AI检测潜在问题,提供优化建议,提高代码质量。这些方法通过机器学习和自然语言处理技术实现,帮助开发者提高效率和代码质量。

给MySQL表添加和删除字段的操作步骤 给MySQL表添加和删除字段的操作步骤 Apr 29, 2025 pm 04:15 PM

在MySQL中,添加字段使用ALTERTABLEtable_nameADDCOLUMNnew_columnVARCHAR(255)AFTERexisting_column,删除字段使用ALTERTABLEtable_nameDROPCOLUMNcolumn_to_drop。添加字段时,需指定位置以优化查询性能和数据结构;删除字段前需确认操作不可逆;使用在线DDL、备份数据、测试环境和低负载时间段修改表结构是性能优化和最佳实践。

怎样卸载MySQL并清理残留文件 怎样卸载MySQL并清理残留文件 Apr 29, 2025 pm 04:03 PM

要安全、彻底地卸载MySQL并清理所有残留文件,需遵循以下步骤:1.停止MySQL服务;2.卸载MySQL软件包;3.清理配置文件和数据目录;4.验证卸载是否彻底。

session_start()函数的意义是什么? session_start()函数的意义是什么? May 03, 2025 am 12:18 AM

session_start()iscucialinphpformanagingusersessions.1)ItInitiateSanewsessionifnoneexists,2)resumesanexistingsessions,and3)setsasesessionCookieforContinuityActinuityAccontinuityAcconActInityAcconActInityAcconAccRequests,EnablingApplicationsApplicationsLikeUseAppericationLikeUseAthenticationalticationaltication and PersersonalizedContentent。

See all articles