使用单个查询搜索同一表中不同列中的每个单词

时间:2015-06-08 03:00:25

标签: php arrays for-loop mysqli

我有string

$searchkey="a b c";

我有三列:

$column=array('column1','column2','column3');

我想检查这些列中的每个单词并获取单个查询字符串。为了得到它,我做了以下......但它看起来并不是我想要的......我是PHP的新手,所以我是堆栈。你可以帮忙解决它或任何其他简单的方法来获得一个查询字符串!!!

$searchkey="a b c";
$words = EXPLODE(" ",$searchkey);
$column=array('column1','column2','column3');

foreach($column as $column){    
   for($i=0; $i<count($words); $i++){
       $string1.=''.$column.' like %'.$words[$i].'% or ';
   }
   $string1 = SUBSTR($string1,0,STRLEN($string1)-4);
   $string2.= '('.$string1.') or ';

}
echo $string2= SUBSTR($string2,0,STRLEN($string2)-4);

它给了我:

  

(column1喜欢%a%或column1喜欢%b%或column1喜欢%c%)或(column1   像%a%或column1一样,%b%或column1,如%c%column2,如%a%或   column2喜欢%b%或column2喜欢%c%)或(column1喜欢%a%或column1   例如%b%或column1像%c%column2一样,%a%或column2,如%b%或   column2喜欢%c%column3,如%a%或column3,如%b%或column3之类   %C%)

但是,我想得到:

  

(column1喜欢%a%或column1喜欢%b%或column1喜欢%c%)或   (column2喜欢%a%或column2喜欢%b%或column2喜欢%c%)或   (column3喜欢%a%或column3,如%b%或column3,如%c%)

提前致谢。

1 个答案:

答案 0 :(得分:1)

您只需要将$string1 = "";语句添加为foreach循环体中的第一条指令,在每次迭代中重置它,而不是每次都添加它!

...
foreach($column as $column) {
   $string1 = ""; // <-- Add this line, and every thing will be fine :)
   for($i=0; $i<count($words); $i++) {
       $string1.=''.$column.' like %'.$words[$i].'% or ';
   }
...