Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用like或contains进行sql搜索_Php_Mysql_Search - Fatal编程技术网

Php 使用like或contains进行sql搜索

Php 使用like或contains进行sql搜索,php,mysql,search,Php,Mysql,Search,我有一个表,有两列,分别是列a和列B 此表中的一行在列A中包含值AAA,列B中包含值BBB 如果我搜索AAA或BBB与 SELECT * FROM table WHERE column_A LIKE '%AAA%' OR column_B LIKE '%AAA%'; 或 我得到一个结果 但是,如果我搜索“%AAA BBB%”或“%AAA xyz%”,则不会得到任何结果 我搜索的值来自搜索表单。只要用户只输入BBB或AAA all就可以了,当他使用AAA或BBB和其他东西的组合时,搜索就不起作

我有一个表,有两列,分别是列a和列B

此表中的一行在列A中包含值AAA,列B中包含值BBB

如果我搜索AAA或BBB与

SELECT * FROM table WHERE column_A LIKE '%AAA%' OR column_B LIKE '%AAA%'; 

我得到一个结果

但是,如果我搜索“%AAA BBB%”或“%AAA xyz%”,则不会得到任何结果

我搜索的值来自搜索表单。只要用户只输入BBB或AAA all就可以了,当他使用AAA或BBB和其他东西的组合时,搜索就不起作用了


我怎样才能解决这个问题?我是否需要像这里提到的那样拆分搜索词:

您可以像下面这样使用regexp来搜索列A中的AAA或BBB:

 SELECT * FROM table WHERE column_A REGEXP '.*[A|B]{3}.*$'

既然您已经标记了php,那么我可以提出如下建议:

 <?php 
 $res ="AAA BBB CCC";// your input from use
 $res=explode(' ', $res);
 $sql="SELECT * FROM table where column_A";
 $flag=false;
 for($i =0;$i< sizeof($res);$i++){

    if(!$flag){
        $flag=true;
        $sql .=" like '%".$res[$i]."%'";
    }else{

        $sql .=" or like '%".$res[$i]."%'";
    }


 }
 echo $sql;// resultant sql need not to echo only to show

谢谢大家的评论,我终于这样解决了:

$string = $_GET['searchterm'];

$words = EXPLODE(" ",$string);

FOR($i=0;$i<count($words);$i++){$SQLOPTION  .= "AND CONCAT(column_A,column_B) LIKE '%".$words[$i]."%'";}
$string=$\u GET['searchterm'];
$words=分解(“,$string);

对于($i=0;$i您需要拆分搜索词或使用全文搜索。您可以参考全文搜索的链接“%AAA xyz%”表示您正在查找“AAA xyz”+非“AAA”或“xyz”的内容您的搜索方法正确吗?如果您想获取包含列a的字符串,那么您需要将其转过来,不是吗?例如,像CO一样的“AAA xyz”在哪里NCAT(“%”,列_A“%”)?这与我的解决方案非常相似,所以您可以获得我的投票。谢谢!
$string = $_GET['searchterm'];

$words = EXPLODE(" ",$string);

FOR($i=0;$i<count($words);$i++){$SQLOPTION  .= "AND CONCAT(column_A,column_B) LIKE '%".$words[$i]."%'";}