• 締切済み

MySQLでのデータの検索

PHPで、データベースから、条件にあうレコードだけを取り出そうとしています。 しかし、条件に合うレコードがあるはずなのに、 mysql_query()で条件を指定したSELECT文を渡して、mysql_num_rows()を出力すると0となってしまいます。 その条件とは、ある列の内容が、指定した文字列と完全に一致したら取り出すというものです。 データベースに情報を登録するときに、前後の空白は取り除いてあります。 また、文字コードは、HTML上部でutf-8に設定し、MySQLのクライアント側の文字コードも、mysql_set_charset()でutf-8に設定しています。 ファイルを保存するときの文字コードセットもutf-8にしてあります。 文字コードについては、あまりよく分からないのですが、それ以外の ところでの、文字コードの設定がutf-8以外になっているから、条件に合わない事になってしまうのでしょうか? どなたか分かる方、回答をお願いします。

noname#99124
noname#99124
  • MySQL
  • 回答数1
  • ありがとう数0

みんなの回答

回答No.1

関連するかも知れない 質問番号:5370079 も未解決のままになっているようですが? 言葉による説明 や 「・・・してる(はず or と思っている)」といった書き方でなく、何が事実で何が推測なのか、具体的にどういう指定をしていてどういう結果になっているのかを書かないと。 MySQLのSQLを実行できる環境で、show文を実行し、結果を教えてください。 (1)有効になっている文字コードの表示 show variables like '%char%' (2)表定義内容の表示 show create table 表名

関連するQ&A

  • mysql

    疑問があります。mysqlサーバーとmysqlクライアントとはなんですか? mysqlクライアントとはmysqlに接続するroot以外のユーザーのことを指すのでしょうか?サーバーはそのまんまサーバーのことですよね?? それと文字化け対策にmy.iniに skip-character-set-client-handshake と記述して解決できたのですが、これはサーバー側の文字コードをutf-8に設定しておけば、データベースの登録・参照などを必要として接続してくるユーザーの文字コードを無視してutf-8にしちゃうよっていうことなのでしょうか?

  • MySQLでテーブルごとに内部文字コードを変更したい

    現在、FreeBSD4.7上でMySQL3.23.55を使用しています。 文字コードは default-character-set=ujis と/etc/my.cnfで設定しています。 内部コードがsjisのデータベースを1つだけ作成したい のですが、マニュアルを見ていてもデフォルト以外の charsetのデータベースの作り方が載っていないように 思います。 PostgreSQLだとデータベース毎に作成時に文字コードを 指定できるようなので気になっています。 MySQLでも--with-extra-charsets=complexを指定すれば 各国の言語がインストールされているのでどうにかすれば 使えるはずだと思うのですが・・ 識者の方のアドバイスなどいただけたら幸いです。

  • mysqlでエラーが出ます。

    環境は Windows7 mysqlはmysql-5.5.8-win32.msi です。 データベースを作成しテーブルも作成しています。 INSERT INTO でテーブルにレコードを追加しようとすると日本語が追加できません。 このようなエラーがでます。 MySQL]ERROR 1366 (HY000): Incorrect string value 僕なりにいろいろ調べて 文字コードの設定も my.iniないの設定も #default-character-set=utf8 default-character-set=sjis に変更もしました。 しかし コマンドブロンブスで show variables like '%char%'; で確認したらやはり character_setがすべてutf8になっていて日本語が入力できません。 対処法を教えてください。

    • ベストアンサー
    • MySQL
  • MYSQLの文字化けについて

    MYSQLの文字化けについて質問させてください。 MYSQL COMMAND LINE CLIENTでMYSQLに作ったデータベースに下記のSQL文でデータを入れると、下記のエラーが出ます。 sql 「insert into テーブル名 (id、type)values (1,'男性’);」 エラー文 incorrect string value: '入力文字が文字化けして表示’for column 'type’at row 1 文字化け対策として、調べたところ、下記のように「my.ini」に記述すると言うことでしたので、試してみました。 [mysql] default-character-set=utf8 [mysqld] default-character-set=utf8 skip-character-set-client-handshake [mysqldump] default-character-set =utf8 ちなみにその他情報です。 MySQLのバージョン MySQL 5.1 MySQLで有効になっている文字コード character_set_client | utf8 character_set_connection | utf8 character_set_database | utf8 character_set_filesystem | binary character_set_results | utf8 character_set_server | utf8 character_set_system | utf8 何かお解かりになることがありましたら、宜しくお願いします。

  • 文字化けで困っています(mySQL4.1のデータをphpで取得)

    phpでmySQLのデータベースからデータを取得し表示させたいと思っています。 文字化けしてしまい、???で表示され困っています。 <環境> レンタルサーバーのMySQL - 4.1.16を使用しています。 Variable_name Value character_set_client utf8 character_set_connection ujis character_set_database ujis character_set_results utf8 character_set_server ujis character_set_system utf8 character_sets_dir /usr/local/mysql-4.1.16/share/mysql/charsets/ レンタルサーバなので、my.cnfを変更することはできず、.htaccessファイルに AddType "text/html; charset=Shift_JIS" html,php AddCharset Shift_JIS .html,php など書いてみたり、phpファイルに、 header('Content-Type:text/html; charset=Shift_JIS'); <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> mysql_query("SET CHARACTER SET SJIS"); など書いてみましたが、変わりませんでした。 わかりにくい説明で申し訳ありませんが、文字化けを直す方法をご存じの方、よろしくお願いします。

    • ベストアンサー
    • PHP
  • (mysql_set_charset)PHPでINSERTした時の文字

    (mysql_set_charset)PHPでINSERTした時の文字化け 現在、独学でPHPを弄っているのですが 文字化けが起こってしまい色々調べたのですが理解できていないのでこちらで質問させていただきます。 海外・日本向けのホームページを作成中で 日本向けのHTMLについては、 <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> 海外向けのHTMLについては、 <meta http-equiv="content-type" content="text/html; charset=utf-8"> と、設定。 データベースの設定は(全てを理解していないのでコピー) MySQL:MySQL の文字セット: UTF-8 Unicode (utf8) MySQL 接続の照合順序:utf8_general_ci 各テーブル照合順序:utf8_general_ci 各カラムは数値の部分のみ)int、文字列についてはvarchar、utf8_general_ciです。 PHPのver:5.2.14 (レンタルサーバーはsakuraインターネットです。) そこで日本向けのHPからINSERTを行ったところ、 DB内を見ると文字が入っていない状態だったり、文字化け(イ.イイイ(適当))な感じになり 非常に苦戦しております。 私的思考では 『utf8のDBにutf8以外の文字コード(shift_jisやらeuc等)で書き込むから文字化けするのであって 書き込む時にutf8に変換してやれば良い。』と思っております。 (この時点で解釈が間違っているのであれば遠慮無くご指摘頂ければ幸いです。) そこで色々調べてみたのですが mysql_set_charset()関数を記述すると良いとの記事がありました。 ですがこの関数について解釈がままならず・・・(涙 例えばこの関数は $link = my_mysql_connect($host, $user, $passwd) $tmp = mysql_set_charset('sjis', $link); utf8で書き込みをしたutf8の文字コード(データ)をsjisとして表示してくれる訳でしょうか? 簡単に言えば <meta http-equiv="Content-Type" content="text/html; charset=shift_jis">と同様の意味でしょうか? また、PHPからINSERTする時の変換についてはINSERT前に mb_convert_encoding() で変換しなければならないのでしょうか? また、表示もそうですが 海外向け・日本語向けのHPを作成する際はDBを分割するべきなのでしょうか? イタリア語やフランス語については「e」の頭に「`」の様な特殊文字がありますし・・・。 乱文で失礼致しました。 どなたかご教授頂ければ幸いです。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • mysqlコマンドラインのことで・・・・

    はじめまして。 今、LinuxのCentOSでmysqlをインストール(yumで)しコマンドラインでデータベースを作成し、insert文で日本語を入力したのですが、なぜか文字化け?をしてしまう現象が起きております。 いろいろ調べた結果どうやらダブルクウォートとか()で囲むとばけるみたいです。 現象) mysql> insert into test (1,"聽聽聽・ ") ※本来は↓ mysql> insert into test (1,"あああああああ"); でも、ふしぎなことにメモ帳で書いたものを貼り付けると文字化けはせず、正常うまくいきshow コマンドでデータを見ることができます。 他にもデータベース名を日本語にしてもうまくいきます。 mysql> create database あああああ; Query OK, 1 row affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | | あああああ | +--------------------+ 4 rows in set (0.00 sec) ちゃんと消すこともできます。 insertだったり、updateなどでデータ(””や()で囲むと?駄目?)をコマンドラインで更新すると化けてしまいます。 もしお分かりになる方がいらっしゃいましたら宜しくお願いします。 ■サーバ情報 Linux CentOS 5.3(final) カーネル 2.6.18-164.el5 MySQL version 5.0.77 mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.06 sec) ■my.cnfの設定 [client] default-character-set = utf8 [mysqld] default-character-set = utf8 skip-character-set-client-handshake [mysql] default_character_set = utf8 ※関係ないと思いますが一応i18nの設定も cat /etc/sysconfig/i18n LANG="ja_JP.UTF-8" SUPPORTED="ja_JP.UTF-8:ja_JP:ja" SYSFONT="latarcyrheb-sun16" ※ターミナル設定もutf8になっております。 宜しくお願いいたします。

  • phpMyAdmin MySQL

    phpMyAdminについて データベース名は英語以外に漢字で作る事もできますが漢字やカタカナで作っているという特殊な?方はいらっしゃるでしょうか? (もし作ってる方がいらっしゃったら使用用途を教えて頂きたいです) データベース初心者はphpMyAdminなどGUIなどでやった方が理解は深まると思いますか? (ケースバイケースだとは思いますが...) マニアックな質問なのですが 文字コードの指定で utf-8-general-ci utf-8-Unicode-ci を比較した場合どちらがより汎用性のある文字コードだと思いますか? (これもケースバイケースだとは思うのですが) ソースコードについて $pdo = new PDO("mysql:dbname=yoyaku_status2", "root"); $st = $pdo->query("SELECT * FROM yoyaku"); while ($row = $st->fetch()) { $name = htmlspecialchars($row['status']); echo "<tr><td>$name</td><td> </td></tr>"; でデータベースから引っ張って画面に出力したものが「???」と文字化けする場合 header('Content-Type: text/html; charset=UTF-8');  mysql_query('SET NAMES utf8', $sql );    php.ini データベース作成時の文字コード指定 以外に文字化けする原因はありますでしょうか? ※全部答えなくて大丈夫です。 答えられる範囲で問題ありません。(データベース初心者でCUIはあまり使っていません)

    • ベストアンサー
    • MySQL
  • mysqlの文字化けについて

    さくらサーバーのプレミアムプランで、MYSQLが文字化けを起こして困っています。 MYSQL5.1、データベースの文字コードはUTF8です。 UTF8でエンコードされたPHPプログラムからデータをINSERTすると文字化けを起こします。 ハッスルサーバーで同じ環境を再現すると、文字化けは起こしません。 違いは、ハッスルサーバーでは、「character_set_server utf8」になっているのに対して、 さくらサーバーでは、「character_set_server ujis 」となっています。 この、ujisをutf8に変更すれば解決しそうに思うのですが、変更の仕方がわかりません。 アドバイス頂けましたら、幸いです。

  • Java+MySQLで特殊文字(丸数字(株)~)が文字化け

    WindowsXP Pro JAVA 1.6.0_15 Struts2 Eclipse 3.5 MySQL 5.0.85 上記の環境で開発を行っております。 Eclipseのテキスト・ファイル・エンコードはShift-JISになっており、 MySQLの設定は以下のようになっております。 character_set_client | utf8 character_set_connection | utf8 character_set_database | utf8 character_set_filesystem | binary character_set_results | utf8 character_set_server | utf8 character_set_system | utf8 各テーブルの文字コードはSJISになっております。 この状態で(1)(株)II~等を使用すると文字化けしてしまいます。 携帯用のページの為、 JSPのヘッダーのcharsetは <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=Shift_JIS" /> にしてあります。 試行錯誤してみたのですが、どうにもうまくいかず進まない状態です。 お分かりになられる方いらっしゃいましたら是非ともご教授願います。