
こんばんわ。お世話になります。
PHPからSQLを発行してLIKE検索をしようとしているのですがうまくいきません。(Xampp MySQL)
$keyword = htmlspecialchars($_POST['keyword']);
mysql_real_escape_string($keyword);
$sql = "select * from master where name like '%{$keyword}%'";
テーブル内の name にマッチするはずの言葉があるのにマッチしません。
ちなみに
echo $sql;
とSQL文を表示させてPhpMyAdminでそれを実行すると、目的の検索結果が表示されます。
いろいろ検索してみたところ、LikeをLike Binary にする方法などがありましたが、どうにもうまくいきませんでした。文字コードはフォーム側、PHP・SQLともにUTF-8です。
'%{$keyword}%'あたりの書き方が悪いのでしょうか。
お手数おかけいたしますがアドバイスの程お願いいたします。
No.2ベストアンサー
- 回答日時:
>character_set_server latin1
これがだめですね。
my.ini、my.cnfのどちらの設定ファイルを使っているか分かりませんが、[mysqld]での設定の問題です。
設定変更し、MySQLサーバを停止&再起動して、再度、試してみてください。
お世話になっております。
現在使っているPCのmy.ini[mysqld]ブロックを変更し、再起動したのですが、latin1のまま変わらず。my.cnfはありませんでした。たまたま前に使っていたPCにmy.cnfが残っており、全てutf8で動いていたものですから、これをコピーし、現在のPCに持ってきたら全てutf8に変わりました。SQL文も問題なく動かすことができました。ありがとうございました。(いつも文字コードがらみでハマってしまいます・・・)
No.1
- 回答日時:
書き方に問題はなさそうですが、もしかして、SQL文の実行から参照結果を表示あるいは処理している部分に問題があるのではないでしょうか。
試しに、LIKE を使わないで name='abc' などとして、絶対に対象がある文字列で実行してみてはどうでしょうか。
エラー表示はどのような設定がされているのかわかりませんが、エラーが発生しているのにメッセージを非表示にしているとか。
この回答への補足
回答ありがとうございます。いろいろ検証してみました。
name = 'abc'はマッチしますが、name = 'あいう'はマッチしません。
またフォームからデータを受け取る際、半角英数字であればマッチするのですが、全角日本語になるとだめです。日本語関係のトラブルでしょうか。
show variables like "char%" すると、
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
と表示されます。どこがまずいのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mysqlのupdate構文についての質...
-
htmlコードで書かれた表にphpで...
-
エラー 1068 (42000): 複数の主...
-
mysqlがインストールされている...
-
MySQL NULLだけをカウントして...
-
SQLでカラムを追加し、条件に合...
-
「重複を間引いた数」をcountし...
-
SQLです教えてくださいお願いし...
-
SQLの検索について
-
同一日に複数レコードがある場...
-
MAMP 99ドル約1.6万円 高い...
-
あってますか?SQL
-
WHERE `年月日` = '晴' OR `年...
-
SQLです教えてくださいお願いし...
-
SQLを作ったのですがうまくいき...
-
(初心者)MySQLやmaraDBで、crea...
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
SQLです教えてください。
-
SQLです教えてくださいお願いし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テーブル作成でエラーが出てき...
-
LIMIT で条件を満たしているの...
-
プログラミングの詳しい人へ
-
MySQLのテーブル作成でハイフン...
-
MYSQLサービス停止時にWindows...
-
SQLで抽出してCSVで書き出した...
-
外部キー制約について
-
(統計量の)分散を算出したい
-
削除した件数を取得
-
sql連結演算子concatと"||"
-
MYSQLのログにつきまして
-
MYSQLのデータに「;」を入力
-
データーベースについて
-
NULLについて
-
MySQLのエラーの取得
-
mysql で副問い合わせができな...
-
実行時エラー80004005
-
mysql_num_rows()のエラーについて
-
MySQLで特定のテーブルが作成で...
-
phpMyAdminについて
おすすめ情報