質問編集履歴

5

追記

2018/04/05 09:22

投稿

sanpei
sanpei

スコア15

test CHANGED
File without changes
test CHANGED
@@ -168,8 +168,16 @@
168
168
 
169
169
 
170
170
 
171
+ 全文一致は問題ないので、
172
+
173
+ ワイルドカード「%」が入ると、サーバーBで何かが起こる…?
174
+
175
+
176
+
171
177
  あいまい検索ができるローカル環境と、
172
178
 
173
179
  できないサーバーBの違いといえば、
174
180
 
181
+ OS(Windows10 or Windows server 2008)
182
+
175
183
  IISのバージョン(10 or 6)なのですが…

4

誤字

2018/04/05 09:22

投稿

sanpei
sanpei

スコア15

test CHANGED
File without changes
test CHANGED
@@ -126,7 +126,7 @@
126
126
 
127
127
  $stmt = $dbh->prepare($sql );
128
128
 
129
- stmt->execute(["ホゲの"]);
129
+ stmt->execute(["%ホゲの%"]);
130
130
 
131
131
  ```
132
132
 

3

アドバイスをいただいた件を検証しました

2018/04/05 08:14

投稿

sanpei
sanpei

スコア15

test CHANGED
File without changes
test CHANGED
@@ -105,3 +105,71 @@
105
105
   $stmt->execute(array(sprintf('%%%s%%', addcslashes($name, '\_%'))));
106
106
 
107
107
  ```
108
+
109
+
110
+
111
+
112
+
113
+ ### 検証
114
+
115
+ あいまい検索ができないサーバーBに対して下記の検証を行いました。
116
+
117
+
118
+
119
+ 製品名:ホゲのパソコン
120
+
121
+
122
+
123
+ **値をスタティックにした場合**
124
+
125
+ ```
126
+
127
+ $stmt = $dbh->prepare($sql );
128
+
129
+ stmt->execute(["ホゲの"]);
130
+
131
+ ```
132
+
133
+ 結果が返ってこず。
134
+
135
+
136
+
137
+ **プレースホルダを止め、SQL文に直接値を記述**
138
+
139
+ ```
140
+
141
+ $sql = <<<SQL
142
+
143
+ SELECT
144
+
145
+ NAME
146
+
147
+ FROM
148
+
149
+
150
+
151
+ WHERE
152
+
153
+ NAME LIKE %ホゲの%
154
+
155
+ SQL;
156
+
157
+
158
+
159
+ $stmt = $dbh->query($sql );
160
+
161
+ ```
162
+
163
+ 返ってきました。
164
+
165
+
166
+
167
+ プレースホルダへの値の入れ方が悪いのでしょうか…。
168
+
169
+
170
+
171
+ あいまい検索ができるローカル環境と、
172
+
173
+ できないサーバーBの違いといえば、
174
+
175
+ IISのバージョン(10 or 6)なのですが…

2

データベースの情報を追記しました

2018/04/05 05:26

投稿

sanpei
sanpei

スコア15

test CHANGED
File without changes
test CHANGED
@@ -22,6 +22,18 @@
22
22
 
23
23
 
24
24
 
25
+ **データベースの場所**
26
+
27
+ サーバーA
28
+
29
+ ・Windows Server 2008 SP2
30
+
31
+ ・IIS 6
32
+
33
+ ・SQL server 12
34
+
35
+
36
+
25
37
  **◎あいまい検索ができる環境**
26
38
 
27
39
  ローカルの開発環境
@@ -33,6 +45,8 @@
33
45
 
34
46
 
35
47
  **×あいまい検索ができない環境(※全文一致は可能)**
48
+
49
+ サーバーB
36
50
 
37
51
  ・Windows Server 2008 SP2
38
52
 

1

記載ミスを修正いたしました。

2018/04/05 03:20

投稿

sanpei
sanpei

スコア15

test CHANGED
File without changes
test CHANGED
@@ -88,6 +88,6 @@
88
88
 
89
89
   $stmt = $dbh->prepare($sql );
90
90
 
91
-  $stmt2->execute(array(sprintf('%%%s%%', addcslashes($name, '\_%'))));
91
+  $stmt->execute(array(sprintf('%%%s%%', addcslashes($name, '\_%'))));
92
92
 
93
93
  ```