- ベストアンサー
MySQLとPHPの組み合わせで検索できない原因は何か?
- MySQLとPHPを組み合わせて掲示板を作成していますが、あるユーザーの書き込みだけが検索できない状態です。
- 文字コードの問題やメールアドレスの文字化けは確認済みであり、再現も困難です。
- ユーザーがiPhoneを使用していることに関連性があるかもしれませんが、具体的な原因は分かりません。
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- PHP+MySQL エンコード
文字コードについて教えて下さい。 データベースMySQL の文字セット: UTF-8 Unicode (utf8)に固定。 htmlはSIFT-JISで表示。 フォームで受けとったデータをPHPからDBに書き込む場合 i18n_convert($data,"UTF-8", "SJIS"); をして書き込めば問題ないでしょうか? DBがEUCの場合は問題なかったのですが、UTF-8は初めて 扱うため、文字化けの不安があります。 いまいち、文字コード(バイト数の違いなど)が理解できておりません。 ご教授お願い致します。
- 締切済み
- PHP
- MySQLで半角濁音文字の検索
宜しくお願い致します。 MySQLのselect検索時にフリーワード検索をしています。 DB上には半角・全角文字が混在しており、検索窓に入力した文字の全角・半角を区別せずに検索しております。 文字コードがUTF-8なので、SQL文のwhere区で「collate utf8_unicode_ci」を指定して全角・半角の区別無しで検索しております。 しかし、半角濁音文字、たとえば「ベルト」や「パワー」等の文字列がDB上に半角カタカナで入っている場合に検索窓に全角で入力しても検索できません。 原因はDB上では半角の「ヘ」と「濁音記号」として認識しており、検索窓に入れた文字列は、そのまま「ベ」という1文字として認識しているので検索できないと思われます。 この問題を解決する方法が無くて悩んでおります。 どなたかご教授の程、宜しくお願いいたします。
- ベストアンサー
- MySQL
- MySQLでinsertできない原因は?
PHPとMySQLでちょっとした掲示板とメールフォームを作って使ってもらってます。 メールフォームを使ったメッセージをMySQLのデータベースに記録するように作ってるんですが、たまにメッセージだけが記録されてないことがあります。名前とかメールアドレスとかのカラムは記録されてるんですが。 フォームはUTF8で表示されるようにしていて、特に文字コードの変換をすることなくそのままinsertしてるので、最初は文字コードの関係かなと思ったんですが、Androidだったり、iOSだったりするし、JISでもUTFでもなさそうなのでで、いまいち特定できず。 そもそも、文字コードが合わなくても、文字化けした状態で記録されますよね? こういった場合、何が原因と考えられるでしょうか? ちなみにMySQLの方は「utf8_general_ci」で設定しています。
- ベストアンサー
- MySQL
- mysql
疑問があります。mysqlサーバーとmysqlクライアントとはなんですか? mysqlクライアントとはmysqlに接続するroot以外のユーザーのことを指すのでしょうか?サーバーはそのまんまサーバーのことですよね?? それと文字化け対策にmy.iniに skip-character-set-client-handshake と記述して解決できたのですが、これはサーバー側の文字コードをutf-8に設定しておけば、データベースの登録・参照などを必要として接続してくるユーザーの文字コードを無視してutf-8にしちゃうよっていうことなのでしょうか?
- 締切済み
- ハードウェア・サーバー
- PHPでの文字列置換について
こんにちは PHPにて丸カッコ内の文字列を取得しようとしています。 対象の文字列は、「坂(さか)」という文字列の全角丸カッコ「()」内になります。 正規表現でやればすぐに取得できるのかもしれませんが、正規表現の知識が無いため 力ずくでやってみようとしました。 そこで、「(」で文字列の位置を取得して…と考えて色々やったのですが、 この全角丸カッコ「(」が、mb_strposでも位置を検知できず、 全角丸カッコ「(」を半角にして対応してみようかとmb_ereg_replace('(','(','坂倉武史(さかくらたけし)');としようとしても、変換されず困っております。 ちなみに「坂(さか)」という文字列は、 ネット上のあるHTMLから、file_get_contentsでURLを指定してから 取得して、その文字コードがEUC-JPなので、 mb_convert_encoding($dataXML, "UTF-8", "EUC-JP"); で、UTF-8に変更しております。 文字コードの問題のかもしれませんが、答えがみつかりません。 1。正規表現で取得できるのであれば、正規表現の書き方をお教えいただけますでしょうか。 2。正規表現が難しいのであれば、力ずくでやるのでこの「(」全角丸カッコの始まりの検知方法をお教えいただけますでしょうか。 PHPの実行環境は、 PHP5.3 mbstring.language japanese mbstring.internal_encoding UTF-8 mbstring.encoding_translation ON default_charset UTF-8 UNIX 文字コード UTF-8 ソース文字コード UTF-8 です どうぞよろしくお願いいたします。
- ベストアンサー
- PHP
- PHP->MySQLに漢字データが渡らない
Fedora11の自家サーバー&「ウェブDYIで行こう!たのしいPHP入門」という書籍で、PHPのお勉強をしています。下記のコードで「佐藤」という漢字データがMySQLに渡りません。satoに変更すると、問題なく渡ります。MySQLの文字コードはUTF-8に設定しています。(全てUTF-8で統一しているつもり)文字化けではなく、print_r($result);のところで、nameフィールドは何も表示されません。htmlソースを見ても、何も存在していない様に見えます。 (注)書籍のコードに、しつこい位UTF-8の記述を足してみておりますが、足す前も同様でした。 <html><body> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <pre><?php ini_set("default_charset", "UTF-8"); $dsn = "mysql:host=localhost;dbname=xxxxxx"; $user = "xxxxxx"; $password = "*******"; $db = new PDO($dsn, $user, $password); $db->exec("SET NAMES utf8"); $insert_query = "INSERT INTO users (name, email) " ."VALUES ('佐藤','sato@example.com')"; $db->exec($insert_query); $result = $db->query("SELECT * FROM users")->fetchAll(); print_r($result); ?> </body></html> 最初php.iniは初期値のままでやっていて、下記記事を参考に http://hain.jp/index.php/tech-j 次の通り設定してみましたが、事態は変わりませんでした。 output_buffering = Off ; default_charset = EUC-JP mbstring.language = Japanese mbstring.encoding_translation = off mbstring.http_input = pass mbstring.http_output = pass mbstring.internal_encoding = UTF-8 mbstring.substitute_character = none mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII 原因と対策がお分かりの方がいらっしゃいましたら、御教示のほど、よろしくお願いします。
- ベストアンサー
- PHP
- PHPのコードをUTF-8に変換したい。
なんとかメールフォーム設置までこぎ着けたのですが、届いたメールが文字化けしてしまいます。HTMLの文字コードがUTF-8、PHPの文字コードがshift-jisなので原因はそこだと考えたのですがPHP内のshift-jis表記をUTF-8に変えるとPHP内で文字化けが起こってしまいます。 MultiTextConverterなどのアプリケーションを使っても同様の文字化けが起こります。 どうすればいいのか分かりません。 よろしくお願いします。
- 締切済み
- PHP
- phpからMySQLへの日本語文字化けについて
phpからMySQLへの日本語文字化けについて こんにちは。お分かりの方は教えてください。 現在、「ハッスルサーバー」を利用しwebのphpからMySQLサーバーへの 情報登録画面を作成しています。 登録内容で数値やメールアドレスなどの「1バイト文字」ですと 問題ないのですが、日本語の「2バイト文字」ですと文字化けが 発生してしまいます。 phpやMySQLに知識が無いため色々と調べて試したのですが 正しく登録できませんでした。 試した結果とサーバー/DBの状況は以下の通りです。 ※サーバー/DB ・バージョン:5.0.90-log ・文字セット:UTF-8 Unicode (utf8) ・接続照合順序:utf8_general_ci ・種別:MyISAM ・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/local/share/mysql/charsets/ ※phpファイルにて試した設定 //接続 $objCon = mysql_connect(C_SERVER, C_USER, C_PASSWORD); //文字コード // mysql_query("SET NAMES SJIS"); ←文字コードを左の2パターンで // mysql_query("SET NAMES UTF8"); ←どちらかに切り替えて実行しました。 //データベース $objSecDB = mysql_select_db(C_DB_NAME); //**********SQL(Insert)**********// $strSql = ""; $strSql = $strSql . "Insert Into XXXXX "; $strSql = $strSql . "("; $strSql = $strSql . "KeyNo,"; $strSql = $strSql . "E_Mail,"; $strSql = $strSql . "Title"; $strSql = $strSql . ") "; $strSql = $strSql . "Values "; $strSql = $strSql . "("; $strSql = $strSql . " " . mysql_real_escape_string($intKeyNo) . ", "; //KeyNo $strSql = $strSql . " " . mysql_real_escape_string($strEmail) . ", "; //E_Mail $strSql = $strSql . "'" . mysql_real_escape_string($strTitle) . "' "; //Title $strSql = $strSql . ")"; //SQL発行 $blnRet = mysql_query($strSql); ・上記のソース内に記しましたが文字コードを2パターン切り替えて 実行しましたが文字化けや空文字が登録されました。 どなたか対処方法をお分かりの方はお教えください。 よろしくお願いします。
- ベストアンサー
- MySQL
- MySQLの日本語入力について
現在、MySQLをローカルではVer5.7.17、AWSのRDS内のMySQLはVer5.6.27を それぞれ使っています。 ローカルのほうでは、すんなり日本語(全角文字、半角カタカナ)が入るのですが、 RDSのほうではなぜか、全角文字、半角カタカナを入力しようとすると、 から文字になってしまい、何も入ってないし、NULLでもない状態になります。 ちなみに文字コードはどちらとも、UTF-8です。 よろしくお願いします。
- 締切済み
- MySQL
- mysqlの文字化けについて
さくらサーバーのプレミアムプランで、MYSQLが文字化けを起こして困っています。 MYSQL5.1、データベースの文字コードはUTF8です。 UTF8でエンコードされたPHPプログラムからデータをINSERTすると文字化けを起こします。 ハッスルサーバーで同じ環境を再現すると、文字化けは起こしません。 違いは、ハッスルサーバーでは、「character_set_server utf8」になっているのに対して、 さくらサーバーでは、「character_set_server ujis 」となっています。 この、ujisをutf8に変更すれば解決しそうに思うのですが、変更の仕方がわかりません。 アドバイス頂けましたら、幸いです。
- 締切済み
- MySQL
お礼
if文ではなく、MySQLのクエリの中でヒットするレコードをカウントして1以上ならという形ですね。 恥ずかしながら、PHP、MySQLともに勉強を始めて半年ほどでして、pringlezさんから提示していただけるような確認のための関数などの知識が決定的に欠落しています(^_^; それ以前に作り始めた時と今現在での知識の差も影響していまして、今ソースを読み返すとなんでこんな作りにしたのか自分でも疑問に思うほどカオスな状態になっていて、もうどこで何をしているのかが分からない状況です。 ですので、結局最初から作り直すことにしました(^_^; せっかくアドバイスいただいたのに何だか申し訳ありません。 教えていただいた関数などは今後の参考とさせていただきます。 ご回答ありがとうございました。