教えて下さい。
自身の環境の文字設定が把握できておらず申し訳ありません。
以下のようにSQLを投げ、取得したデータを表示させようとしていますが、取得はできている
ものの $tmp_kenmei を表示させようとしたところ、表示されません。
echo で中身を確認した際には、問題なくセットされていました。
また、where句で条件を指定しない場合は、問題なく取得できます。
文字設定か何かの問題かと思われますが、、、
何が原因でしょうか、、、教えて下さい。
よろしくお願いします。
《内容》
$tmp_kenmei = mb_convert_encoding($tmp_kenmei,"UTF-8","SJIS");
$con = mysql_connect("localhost", "root", "999999"); //データベースへ接続する
if (!$con) {
die('接続できませんでした: ' . mysql_error());
}
$sql = "select kenmei from tbl_AAA where kenmei like '%" . $tmp_kenmei . "%'";
if (!mysql_select_db('db', $con)) {
echo 'Could not select database';
exit;
}
$result = mysql_query($sql,$con);
mysql_query("set names sjis");
if (!$result) {
echo "DB Error, could not query the database\n";
echo 'MySQL Error: ' . mysql_error();
exit;
}
$row = mysql_num_rows($result);
$count = 1;
for($i=0;$i<$row;$i++) {
$array = mysql_fetch_array($result);
//件名
$tmp_kenmei[$count] = mb_convert_encoding($array[0],"SJIS","UTF-8");
echo mb_convert_encoding($array[0],"SJIS","UTF-8");
$count++;
}
No.5ベストアンサー
- 回答日時:
$row = mysql_num_rows($result);
$count = 1;
for($i=0;$i<$row;$i++) {
$array = mysql_fetch_array($result);
$tmp_kenmei[$count] = mb_convert_encoding($array[0],"SJIS","UTF-8");
echo mb_convert_encoding($array[0],"SJIS","UTF-8");
$count++;
}
のところを
$count = 1;
while($array = mysql_fetch_array($res,MYSQL_ASSOC)){
echo $count.":".$array["kenmei"]."<br>";
$count++;
}
としてみてください
それでもだめなら
echo のところを print_r($array);
に変えてみてください
条件なし、半角文字のみ検索、全角文字検索の3パターン試してみてください
No.4
- 回答日時:
>検索条件を追加した場合のみ、以下の記述は表示されませんでした、、、
検索条件を追加した状態で
$row = mysql_num_rows($result);
の後ろに
print $row."件<br>";
とすると1以上の件数がヒットしていますか?
この回答への補足
yambejp様、何度もご回答ありがとうございます。
print $row."件<br>";
を実行したところ、やはり該当件数分○件と表示されます。
レコードは取得できていますが、データだけが表示できません。
原因が全くわからず、、、
No.3
- 回答日時:
>英数文字だけでも検索はヒットし、レコードも取得できますが、
>表示部分で空白となってしまいます。
この部分だけでいえば
$array = mysql_fetch_array($res,MYSQL_ASSOC);
でうけたら
print $array["kenmei"];
してみてください
yambejp様、ご回答ありがとうございます。
検索条件を追加した場合のみ、以下の記述は表示されませんでした、、、
print $array["kenmei"];
↑ 何もでてきません、、、
No.2
- 回答日時:
>$tmp_kenmei = mb_convert_encoding($tmp_kenmei,"UTF-8","SJIS");
ということは、$tmp_kenmei はutf-8 になっているんですよね?また
>echo mb_convert_encoding($array[0],"SJIS","UTF-8");
ですから、utf-8で取得してsjisに変換」して表示するんですよね?
であれば、
>mysql_query("set names sjis");
は誤りです。そもそもmysql_queryで文字セット指定するなんて論外なので
mysql_set_charset('utf8');
としてください。
というか、phpスクリプトの文字セットに合わせて mysql_set_charset('sjis'); としてmb_convert_encodingを省いた方が手っ取り早いですけどね。何故わざわざ文字セットを変更して使っているのかが謎です。
なお、すでに指摘がありますが非推奨のmysql関数を使うべきではありません。PDOで書き直すことを強く推奨します(PDOでMySQLを扱う場合はDSNで文字セットを指定します)。
#個人的には、そもそもphpスクリプトでsjisを使うのがダメだと思う。
#utf-8で書かない理由を知りたい。
agunuz様、ご回答ありがとうございます。
文字設定等を把握していないままプログラムを組んでしまっている
ようです。
申し訳ありません。
mysql_set_charset('utf8');
ご指摘頂いたと通りにしてみましたが、やはり状況は変わりませんでした、、、
No.1
- 回答日時:
まず、英数文字だけの検索でもマッチしないかを確認するところからでしょうね
にしても、なにを参考にしたのかわかりませんが
かなりダメダメな感じがするソースですね
・mysql関数つかってる
・mysql_fetch_arrayに第二引数を指定していない
・utf,sjisの相互変換がへん
(DBはutfで保管?なのにsjisを指定?)
・query処理でset names投げてる
・whileではなくforでまわしてデータをとっている
(別にポリシーをもってやるならそれでも構いませんが)
yambejp様、ご回答ありがとうございます。
何もわかっておらず申し訳ありません、、、
英数文字だけでも検索はヒットし、レコードも取得できますが、
表示部分で空白となってしまいます。
mb_convert_encoding($array[0],"SJIS","UTF-8");
ここまではうまく取れてきていますが、セットできていないようです。
教えて下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- PHP php エラー 2 2022/10/23 16:43
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHP+mysqlでSQL文に文字数制限...
-
CSVをダウンロードさせた際、CS...
-
テーブルに入っているデータと...
-
PHPで絞り込み検索結果の件数を...
-
PHP+MySQLでの検索結果の横並び...
-
XAMMPが起動しません。
-
sqlから多次元配列に要素を格納...
-
mysql_queryでDB検索をしたいが...
-
ダブルクォート内で変数を展開
-
SQL文2つ実行
-
実行時エラー3131 FROM 句の構...
-
VBAをつかってクエリの情報を抽...
-
Pro*Cの構文エラー
-
SQL文が実行できません
-
MySQLでデータベースにデータin...
-
PHPでMY SQLの連想配列をリンク...
-
OR検索を実装したい
-
csvをDBへ読み込んだら、NULLが...
-
DBで検索結果に該当するデータ...
-
php mysqlで作ったデータをgoog...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
sqlから多次元配列に要素を格納...
-
stringaddslashes 半角¥が消える
-
mysql_query等でレコード数を変...
-
変数内のデータをmysqlのデータ...
-
リストから詳細画面に遷移する...
-
ボタンのonclick時における関数...
-
phpのエラーについてです
-
PHPで絞り込み検索結果の件数を...
-
MySQLのデータを使ってプルダウ...
-
縦に長い<table>でなく横に長い...
-
XAMPPで画面が真っ白になります。
-
配列に値が入らない
-
テーブルに入っているデータと...
-
mysql_queryでDB検索をしたいが...
-
PHP+MYSQLで直近3件のデータ表示
-
DB(MySQL)から複数行のデータを...
-
飲食店のメニュー表を作成中。M...
-
CSVをダウンロードさせた際、CS...
-
「mysqlclient」の事が分からな...
-
phpからMySQLへ日本語insert
おすすめ情報