質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1551閲覧

PHPのmysqliを使った時とシェルやツールを使った時で実行結果が異なる

CyberMergina

総合スコア295

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2015/03/19 14:40

SELECT * FROM wp_postmeta WHERE meta_key = 'あいうえお'
といったフィールドに対して文字列を指定するようなSQLだと、PHPから実行した時は結果が1件も取れず、
Navicatやシェルから実行した時は欲しい結果が取得できるといった状況です。

今まで調べていた中で不審な点が1点。
シェルやNavicatからDBとテーブルの文字コードを調べるとUTF8がセットされているのですが、
PHPの $mysqli->get_charset() では文字コードがlatin1になってしまっている。
PHPでSQL発行時にデフォルトの文字コードをlatin1にして実行すると実行エラーになる。

引き続き調べますが、何か知っている方がいらっしゃいましたらご教授願います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

skip-character-set-client-handshake はバッドなノウハウなので使わないほうがいいです。

ほとんど PDO ですが下記のような記事の方が参考になります。

mysqli はあまり使ったことありませんが mysqli::set_charset で指定できるようです。

投稿2015/03/20 00:25

編集2015/03/20 00:26
ngyuki

総合スコア4514

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CyberMergina

2015/03/20 08:09

> skip-character-set-client-handshake はバッドなノウハウなので使わないほうがいいです。 そうなのですか・・・ ` mysqli::set_charset ` は使っていたのですが、`utf-8` をセットすると結果が取れてこず、 ` latin1` をセットするとSQLエラーになるんです・・・。 PHP本家でのmysqliの関数説明も足りていない状態ですし、使うタイミングが早かったですかね;
ngyuki

2015/03/20 10:18

MySQL の場合 `utf-8` ではなく `utf8` と指定する必要があったと思います。 > PHP本家でのmysqliの関数説明も足りていない状態ですし、使うタイミングが早かったですかね たぶん PDO の方が圧倒的い利用者が多いので、特別な理由がなければ PDO の方が良いと思います。
guest

0

ベストアンサー

文字化けが発生してwhereの中の日本語が正しく認識されてないようですね。
ASCII文字だけのmeta_keyを含むレコードであればselectに成功すると思います。

詳しくは下記が参考になるかと思います。
http://blog.cheki.net/archives/349

投稿2015/03/19 18:44

jollyjoester

総合スコア1585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CyberMergina

2015/03/19 23:54

記事内にある、「skip-character-set-client-handshake」の記述が抜けていたことが原因でした。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問