• 締切済み

PHP + Mysql で特定のフィールドの値を全て表示したいのですが・・・。

id、url、titleなどを格納してるテーブルがありまして、 全てを表示させるのはわかったのですが、 idとurlだけなどといった特定のフィールドの値を全て 表示させ方が分かりません。 検索かけて探してはいるものも、探し方が悪いのか 見つからなかったので質問してみました。 それと、phpmyadmin上では日本語の文字化けはしてないのですが ブラウザ上ではどうも文字化けしてしまいます。 utf8で格納しているはずなのですが、mysqlで表示させるときはsjisでないと文字化けします。 ちなみに照合順序はutf8_unicodeです。

  • MySQL
  • 回答数6
  • ありがとう数12

みんなの回答

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.6

そしてNo1です No5さん、ご指摘ありがとうございます。 PHPのprintって関数じゃないんですね。 bool返すか返さないかって違いだけとは! こんなところも、良くも悪くもPHPって感じですなぁ・・・・・

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.5

思い違いがあるようなので#3についてちょっと指摘を・・・。 たんにprintは戻り値をもつ言語構造であって、関数ではありません。 逆に()は飾りみたいなもんです。 たとえばprint(2)+3;とすると5が表示されます。関数なら変ですよね http://jp2.php.net/manual/ja/function.print.php その他PHPにはincludeなど制御構造でありながら戻り値のあるものは いくつかあります。 個人的には関数と切り分けるためカッコをつけない方をオススメします。 ヒアドキュメントの出力など関数で表現するはむずかしいですね print <<<eof hogehoge eof;

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.4

再度、No1です >この場合のidの最小値、最大値はどうやって出してやればいいのでしょうか? 先ほどのSQL文で取得できるのは、各idの最新版の一覧を取得するSQLです。 二通りの方法が考えられます。 ・取得してきた結果セット内で最小(最大)のidを知りたい。 ・最大値、最小値を知るためだけのSQLをクエリーする。 取得してきた結果セット内で最小(最大)のidが知りたいのであれば、あとはPHP側で操作することになります。 ~ORDER BY id ASC で取得してきた0レコード目(1行目)には最小値のidが、最終行には最大値のidが入ってきます。 配列の一番最初の行を見れば最小のidを取得できる。 $result[0]['id'] とかね 最大値、最小値を知るためだけのSQLをクエリーする場合は・・・ そろそろ自分で調べましょうね。 http://www.google.co.jp/search?q=MySQL+%E6%9C%80%E5%B0%8F%E5%80%A4+%E6%9C%80%E5%A4%A7%E5%80%A4&sourceid=navclient-ff&ie=UTF-8&rlz=1B3GGGL_jaJP275JP275 idの最小値または最小値だけを取得するSQLを別途作ってあげてクエリーすることになります。

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.3

またまたNo1です >参考書の方よりweb上で探して見ているんですけど、 >結構()がついてなかったりするのもありました・・・。 たしかに、参考書やwebで書かれているもので、print文に ()をつけていないものも見受けられます。 しかしそれらは正しい知識を持った上で省略している人であれば良いのですが、「とりあえず省略しても動くし~」という物事の本質を知らないまま省略することはやめましょうという意味で、私は回答しました。 たとえば print()のほかに画面出力として良く使われるものに echo があります echoは厳密には関数ではありません。が echo("あいうえお"); のような使い方もできます 「printは関数なのに、echoは関数ではない ってどゆこと?」 という意味が分かれば ()をつけるつけない の意味が分かってくるかと思います。 ヒントとして $print = print("print"); $echo = echo("echo"); これを実行してみてください。 printは正常に動くのにechoは構文エラーが出るかと思います。 >>$query = "SELECT id,url FROM ".$table; >$query = "SELECT id,url FROM ".$table ORDER BY id ASC; >こうしてしまうと動きませんよね? まぁ、動きませんね http://jp.php.net/manual/ja/language.operators.string.php ここをじっくり読んでください。 $query = "SELECT id,url FROM ".$table." ORDER BY id ASC"; となります。

blue_gale
質問者

お礼

重ね重ねありがとうございます。 参考になります。 もう1つお尋ねしたい事があるのですが、 この場合のidの最小値、最大値はどうやって出してやればいいのでしょうか?

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.2

ふたたび、No1です。 SELECT id, url FROM テーブル名 ORDER BY id ASC ; で、idが小さな数値順に並んだ状態で 結果セットが返ってきます。 ちなみに、 ASCの部分をDESCにすると、逆になります。 SQLの基本中の基本的な構文です。もうすこしがんばりましょう。 あと、もうひとつ 最近、出回ってる参考書が悪いのかどうか分からないんですが。 こういう記述の仕方をするPHP初心者の方が非常に多く見受けられます。 print "{$value}<br>\n"; まぁ確かに動くんですが、メリットは特にありません。 . での文字列連結のほうがよっぽど単純明快で処理速度も速くなります print $value."<br>\n"; こんな感じ。 あと、printは関数ですので、出来れば()つけましょう print ($value."<br>\n"); 同じようにSQL生成のところでも $query = "SELECT id,url FROM $table"; ではなく $query = "SELECT id,url FROM ".$table; としましょう。 ただし注意しなくてはならないのが $query = "SELECT id,url FROM".$table; と記述してしまうと、出来上がるSQL文が SELECT id,url FROMtable と言った具合にくっついてしまいます。

blue_gale
質問者

お礼

度々ありがとうございます。 あまり初心者なのを理由にはしたくはないのですが、 何分、0からのスタートだったので忝いです。 参考書の方よりweb上で探して見ているんですけど、 結構()がついてなかったりするのもありました・・・。 一応無事に動いたのですけれど、 >$query = "SELECT id,url FROM ".$table; $query = "SELECT id,url FROM ".$table ORDER BY id ASC; こうしてしまうと動きませんよね?

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

>全てを表示させる 具体的にどういう方法でおこなったのでしょうか? 単にセレクト文を変えればいいだけでは? SELECT id, url FROM テーブル名 ; これで idとurlのみの全レコードを取得できます。 文字化けですが、全てをutf8にすれば問題ありません。 つまり、MySQLの設定も、PHPの設定も、ソースコードも HTMLも すべて utf8で統一させてください。

blue_gale
質問者

お礼

回答ありがとうございます。 初歩的な事でした(^^A $query = "SELECT id,url FROM $table"; $result = mysql_query($query) or die(mysql_error()); while($data = mysql_fetch_assoc($result)) { foreach($data as $value){ print "{$value}<br>\n"; } print "<br>\n"; } という形のものですが、これの場合idの数が早い順ではなく、 URLのa→wの順に並んでしまうのですが、どうしたらいいでしょうか? 一応ソースコードはutf8にしてはあるのですが、 phpとmMySQLの方はデータ格納後にしたものですので、 もう1度データ収集してからやってみます。

関連するQ&A

  • PHPで「~」文字が化けてしまう

    VertrigoServ にて、WindowsXPへ  Apache 2.0.63  PHP 5.2.6  MySQL 5.0.51b  SQLite 3.5.9  PhpMyAdmin 2.11.7  SQLiteManager 1.2.0  Zend Optimizer 3.3.3  をインストールしました。  その後、PhpMyAdmin で既に用意されていた test データベースに  tbl という名のテーブルを用意し、二つのフィールドを作成しました。  データベース | 照合順序 ------------------------------------------  test | sjis_japanese_ci  フィールド | 種別 | 照合順序  ----------------------------------------  name | text | sjis_bin  name2 | text | sjis_japanese_ci  この name 、name2 フィールドに「~」という文字を挿入してみたら、  データの表示で「?」と表示されてしまいました。  「あ」と挿入しても「あ」と表示されます。  どうしたら「~」と表示されるようになるのでしょうか?  因みに、PhpMyAdminのログイン後のトップページでは、  MySQL の文字セット: UTF-8 Unicode (utf8)  MySQL の接続照合順序:utf8_unicode_ci  と表示されています。  これが問題なのでしょうか?

    • ベストアンサー
    • PHP
  • phpとMysqlの文字化け

    何度もすみません。 phpからinsertするときとphpmyadminから直接挿入するときどちらも文字化けを起こします。 phpは4.4.9でmysqlは5です。 myadminのMySQL 接続の照合順序はsjisにしております。 照合順序と保存される文字コードは違うのでしょうか。 phpファイルはsjisで保存しています。 過去の質問を見たり、調べてset name sjisとset name ujisと mb_convert_encoding($str, "EUC-JP", "SJIS");を それぞれ試しましたが文字化けのままです。 mb_convert_encoding($str, "utf-8", "SJIS"); であいうえおと入力してみたところあい???となりました。 また、adminから直接挿入した時、同じくあいうえおと入力しましたが、 こちらもあい???となりました。 adminの設定はutf-8ということのでしょうか。 照会順序以外文字コードについて表示されているところがわからなかったのですが、 どこで確認できますでしょうか。 また、php、adminともどこの設定を確認すれば良いのでしょうか? 恐れ入りますが教えていただけますでしょうか。

    • ベストアンサー
    • PHP
  • phpMyAdminの接続照合順序が勝手に変わる?

    質問があります。 phpMyAdminの接続照合順序が自分でphpMyAdminから 変更した以外で変わることってありますか? 以下の環境で、あるデータベース(ex_db)がありまして そのデータベースとそれに含まれるテーブルなども全て utf8_unicode_ciという接続照合順序になっていました。 ですが、今日また見てみるとデータベースはutf8_unicode_ciの ままですが、それ以下のテーブルなどは全てeucjpms_japanese_ci に変わっていて、文字化けが発生していました。 一応サイトではちゃんと表示されているのですが、接続照合順序を utf8_unicode_ciに変更しても文字化けは直りませんでした。 ちなみにphpファイルは全てutf8で記述されています。 今日急に変わっていたので困っています。 ご回答をよろしくお願いします。 phpMyAdmin: 2.11.9.2 MySQL クライアントのバージョン: 5.0.33 サーバ: Localhost via UNIX socket MySQL の文字セット: UTF-8 Unicode (utf8) 接続照合順序:utf8_unicode_ci

  • ブラウザーで日本語が文字化けする(PHP+MySQL)

    以下の現象に対処したいのですが、どうすればいいか弱っています。 (1) phpMyAdminからSQLでテーブルに日本語を挿入して、 PHPプログラムでブラウザー表示すると文字化け(?????で表示)する。 phpMyAdminでこのデータを表示すると、正しく日本語表示されている。 (PHPプログラム内で直接日本語データを記述して挿入しても同じ現象となる) (2) ブラウザーで日本語を入力してPHPプログラムで受取りMySQLに出力して、 そのデータをPHPプログラムでブラウザー表示すると問題なく日本語が表示される。 phpMyAdminでこのデータを表示すると、文字化け(ぐじゃぐじゃの文字で表示)する。 利用しているホスティングサービスは、お名前・COMのVPSプラン 実行時の環境 MySQL: サーバのバージョン: 5.0.77 サーバ: Localhost via UNIX socket MySQL の文字セット: UTF-8 Unicode (utf8) MySQL の接続照合順序: utf8_unicode_ci PHP : PHP5を使用 phpプログラムは、UTF-8で記述。 出力されるHTMLの文字セット <meta http-equiv="Content-type" content="text/html; charset=utf-8" />

    • ベストアンサー
    • PHP
  • phpMyAdminでutf8_binを使う

    MySQL+phpMyAdmin+PHPで開発を行っています。 テーブル項目の照合順序をutf8_binで使いたいと思っています。 PHPでのデータのやり取りでは文字化けは発生しないですが、唯一、phpMyAdminの表示でデータを見た時だけ、日本語が文字化けというか16進数の数値がズラズラと表示されます。テーブル項目をutf8_unicode_ci に変更すれば、日本語の文字化けは発生しません。 phpMyAdminの一般設定で照合順序をutf8_binにしても同じです。 utf8_binで定義した場合、phpMyAdminで日本語化け(16進数の数値がズラズラ)が発生しない方法はないのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • phpMyAdminにおいて閲覧した時に文字化け

    こんにちは。haven3と申します。 phpMyAdminにおいて閲覧した時に、日本語の文字化けが発生してしまいます。 経緯としては、 (1)textファイルにて、insert文を記述。(SJISもしくはUTF-8モードでそれぞれtextファイルを作成して試しましたが、文字化けしました。) (2)サーバーにてアップロード後、SSH上で、mysqlコマンドを使用してデータをインポート 下記は、phpMyAdmin上において、表示されている諸情報です。 MySQL - 4.1.20 プロトコルバージョン: 10 サーバー: Localhost via UNIX socket ユーザー: wguowner@localhost MySQL の文字セット: UTF-8 Unicode (utf8) MySQL 接続照合順序: 照合順序 utf8_general_ci phpMyAdmin - 2.8.2.4 MySQL クライアントバージョン: 4.1.18 使用中の PHP 拡張: mysql テーマ/スタイル 日本語 - Japanese 何かお気づきの点がありましたら、情報提供して頂けると助かります。 また、不足している情報があれば、お教え頂けますと幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • ACCESSとphpmyadminの文字関係に関して

    ACCESSからODBC経由でmysql へデータをインポートしました。 結果、phpmyadminで参照した時に、案の定文字化けしていました。 MySQLの文字セットは UTF_8 Unicode(utf8) MySQLの接続照合順序 utf8_general_ci で、テーブル上の各項目の照合順序は utf8_general_ci となっています。 config ファイル等を変更しなければならないかと思いますが、どのように変更すれば良いか教えて頂きたいと思います。 あるいは、そもそもACCESSからインポートする時に何か設定をしなければならない??? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • PHPとMySQLをご利用の方

    PHPとMySQLをご利用の方 PHPとMySQLを利用している方は沢山いらしゃると思うのですが DBでのData保存はどうなってるのかをお聞きしたく思いました。 当方はサクラインターネットでレンタルしており、 PHPver 5.2.14 を利用しています。 DBの文字コードは(調べ方が分からないのですが・・・) (照合順序:utf8_general_ci)utf8。 カラムもutf8_general_ciにしてあります。 日本語、英語(特殊文字含む)を1つのDBに保存したいと思うのですが 『月曜日』とDBに保存する場合、utf8なら『譛域屆譌・』の様に文字化けしたまま保存し 文字を比較する時や表示する時等、必要な時にutf8からsjisに変換し表示(比較)。 これが一般的なのでしょうか? もちろん、phpMyAdminで表示される文字も化けますが。 他に英語の特殊文字を使う場合(イタリア語やフランス語のアクサン・テギュ等)、 DBへは『ciò che』ようなデータを書き込めばいいのでしょうか? データベースの基礎部分で間違えたらと不安になりましたので 質問いたしました。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • phpMyAdmin内での文字化け

    サーバはさくらインターネットを利用してます。 レンタルサーバから専用サーバに移転したのですが、 専用サーバではphpMyAdminで日本語データの文字化けが起きます。 専用サーバのphpMyAdminからDB作成の際、下記の設定で行い、 MySQLの文字セット UTF-8 Unicode (utf8) MySQLの接続照合順序 utf8_unicode_ci DB の照合順序 utf8_unicode_ci レコードをINSERTする際、下記のように文字コードを指定し、 $sql=mb_convert_encoding($sql,"EUC-JP","EUC-JP"); execute_sql($con, $sql); 実行したら、phpMyAdmin内で日本語データが文字化けしました。 サイト内で表示しているDBデータ(日本語)は文字化けしませんでした。 DB の照合順序をutf8以外(ujis_japanese_ciなど)として、 DBを作った場合、レコードをINSERTしたら、サイト内のDBデータも phpMyAdmin内データもどちらも日本語が文字化けします。 また、レンタルサーバのphpMyAdminからDBデータをエクスポートして、 専用サーバのphpMyAdminからインポートした場合、 読み込むDBデータファイルの文字コードをUTF-8にしなければ、 phpMyAdmin内で日本語データが文字化けしてしまいます。 ただ、UTF-8にしてインポートしてもphpMyAdmin内では 文字化けしませんが、サイト内で表示しているDBデータは 文字化けします。 専用サーバのphpMyAdminから データを日本語の文字列に編集・更新したら、 phpMyAdmin内ではそのデータに関しては文字化けなく表示されますが、 サイト内ではそのデータは文字化けしてしまいます。 専用サーバ情報は下記の通りです。 【専用サーバ】 OS:CentOS 5 Apache 2.2.3 PHP5.1.6 DBサーバ:MySQL 5.0.77 アップしているファイルの文字コード:EUC 分かる方、ご回答、よろしくお願いいたします。

    • 締切済み
    • PHP
  • PHP+MySQL エンコード

    文字コードについて教えて下さい。 データベースMySQL の文字セット: UTF-8 Unicode (utf8)に固定。 htmlはSIFT-JISで表示。 フォームで受けとったデータをPHPからDBに書き込む場合 i18n_convert($data,"UTF-8", "SJIS"); をして書き込めば問題ないでしょうか? DBがEUCの場合は問題なかったのですが、UTF-8は初めて 扱うため、文字化けの不安があります。 いまいち、文字コード(バイト数の違いなど)が理解できておりません。 ご教授お願い致します。

    • 締切済み
    • PHP