アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記のようなプログラムを作っていて、検索キーワードにマッチしたレコード数を表示したいと考えております。

$st = $pdo->prepare($hoge);
$st->execute();
$reccnt=$st->rowCount();
echo '<p>検索結果:'.$reccnt.'件</p>';

nameというカラムがあり、そこには商品名を格納しております。
「あいうえお2000グラム」などの名前です。
Likeを使って日本語検索をするとうまくヒットしません。

SELECT * FROM products WHERE name LIKE '%2000%' → OK
SELECT * FROM products WHERE name LIKE '%2000グラム%' → NG
SELECT * FROM products WHERE name LIKE '%あいうえお%' → NG

XAMPP内のMysqからSQL文を直接入力した場合、ちゃんと表示することができました。

詳しい方がいらっしゃいましたら、ご助言をいただけないでしょうか。
よろしくお願いいたします。

A 回答 (2件)

>character_set_database latin1



MySQLの設定ファイルmy.cnfの編集権はありますか?

[mysqld]セクションに
character-set-server = utf8を記載したり

[mysql]セクションに
default-character-set=utf8を記載したり

した上で、mysqldを再起動してみてください
    • good
    • 1
この回答へのお礼

ご回答いただきありがとうございます!
教えていただいた通り、my.cnfファイルに追加してみましたが上手くいきませんでした。データベースを削除、再作成をしたら無事に上手くいきました。お騒がせして申し訳ありませんでした・・・。

お礼日時:2017/01/25 03:20

MySQL内とプログラム側の内部文字コードが違うのでしょう


MySQL側で「SHOW VARIABLES LIKE 'character\_set\_%';」を、
PHP側で「print mb_internal_encoding();」を
それぞれ実行し、文字コードの差異がないか確認してみてください
    • good
    • 0
この回答へのお礼

ご回答いただきありがとうございます!
PHP側で「print mb_internal_encoding();」はUTF-8と表示されたのですが、Mysql側ではこのように表示されました。

Variable_name Value
character_set_client    utf8mb4
character_set_connection utf8mb4
character_set_database latin1
character_set_filesystem binary
character_set_results    utf8mb4
character_set_server    latin1
character_set_system utf8


この「character_set_database latin1」に問題があるのではないかと勝手に思っているのですが、どうなんでしょうか。また、これが問題だった場合はどのようにして変更すればいいのでしょうか。
質問ばかりで申し訳ありませんが、ご助言をいただけないでしょうか。

お礼日時:2017/01/24 14:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す