teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2017/10/11 06:49

投稿

yambejp
yambejp

スコア117908

answer CHANGED
@@ -27,4 +27,27 @@
27
27
  $stmt->fetchAll();
28
28
  */
29
29
  ?>
30
+ ```
31
+ # あいまい検索
32
+ - その1
33
+ ```PHP
34
+ if($keyword!=="" and is_array($keywords) and count($keywords)>0){
35
+ $sql.="AND (0 ";
36
+ foreach(["id","name"] as $v1){
37
+ $sql.=str_repeat("OR $v1 LIKE CONCAT('%',?,'%') ",count($keywords));
38
+ $data=array_merge($data,$keywords);
39
+ }
40
+ $sql.=") ";
41
+ }
42
+ ```
43
+ - その2
44
+ ```PHP
45
+ if($keyword!=="" and is_array($keywords) and count($keywords)>0){
46
+ $sql.="AND (0 ";
47
+ foreach(["id","name"] as $v1){
48
+ $sql.="OR $v1 REGEXP CONCAT(".implode(",'|',",array_fill(0,count($keywords),"?")).") ";
49
+ $data=array_merge($data,$keywords);
50
+ }
51
+ $sql.=") ";
52
+ }
30
53
  ```

1

調整

2017/10/11 06:49

投稿

yambejp
yambejp

スコア117908

answer CHANGED
@@ -11,7 +11,7 @@
11
11
  var_dump($keywords);
12
12
  $data=[];
13
13
  $sql = "SELECT * FROM table WHERE 1 ";
14
- if(is_array($keywords) and count($keywords)>0){
14
+ if($keyword!=="" and is_array($keywords) and count($keywords)>0){
15
15
  $sql.="AND (0 ";
16
16
  foreach(["id","name"] as $v1){
17
17
  $sql.="OR $v1 IN(".implode(",",array_fill(0,count($keywords),"?")).") ";