MySQLで作ったお祭りのデータベースからデータを検索し、お祭りの名前と開催地を表示する方法は?

このQ&Aのポイント
  • MySQLで作成したお祭りのデータベースから、検索結果としてお祭りの名前と開催地を表示する方法を教えてください。
  • PHPのプログラムからMySQLのデータベースを検索し、お祭りの名前と開催地だけを表示する方法を教えてください。
  • MySQLのデータベースからお祭りの名前と開催地を検索して表示するためのPHPプログラムを作成したのですが、検索結果が表示されません。どのようにすれば表示することができますか?
回答を見る
  • ベストアンサー

<大至急!>ご教授願います。

MySQLで作ったお祭りのデータベースからデータを検索し、お祭りの名前と開催地だけを検索結果として表示させるというものを作っています。 しかし、エラーもなにも起きていないのに、検索しても結果が表示されません。検索結果の件数も反映されません。 PHPのプログラムの方にまだ問題があるのでしょうか?それともMySQLの方に問題があるのでしょうか? また、pearについても質問があります。pear listを実行すると問題なく見ることができるのですが、以下のような警告が表示されます。 PHP Warning: PHP Startup: Unable to load dynamic library 'ext\php_pdo_firebird. dll' - 指定されたモジュールが見つかりません。 in Unknown on line 0 Warning: PHP Startup: Unable to load dynamic library 'ext\php_pdo_firebird.dll' - 指定されたモジュールが見つかりません。 in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'ext\php_pdo_oci.dll' - 指定されたモジュールが見つかりません。 in Unknown on line 0 Warning: PHP Startup: Unable to load dynamic library 'ext\php_pdo_oci.dll' - 指 定されたモジュールが見つかりません。 in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'ext\php_pspell.dll' - 指定されたモジュールが見つかりません。 in Unknown on line 0 Warning: PHP Startup: Unable to load dynamic library 'ext\php_pspell.dll' - 指定 されたモジュールが見つかりません。 in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'ext\php_sybase_ct.dll ' - 指定されたモジュールが見つかりません。 in Unknown on line 0 Warning: PHP Startup: Unable to load dynamic library 'ext\php_sybase_ct.dll' - 指定されたモジュールが見つかりません。 勉強中と言ってもを初心者同然なので、ご教授いただきたいです。よろしくお願いいたします。 Windows7 PHP 5.4.9 MySQL 5.5 Apach 2.2.22 phpMyAdmin 3.5.4 <html> <head> <title>PHPのテスト</title> </head> <body> <?php require_once("MDB2.php"); $dbUser = "root"; $dbPass = "im1907720"; $dbHost = "localhost"; $dbName = "moe_db"; $dbType = "mysql"; $dsn = "$dbType://$dbUser:$dbPass@$dbHost/$dbName"; $conn = MDB2::connect($dsn); if(MDB2::isError($conn)) { die($conn -> getMessage()); } $conn -> disconnect(); //POSTされたデータを受け取り、エスケープします。 $search_key=addslashes($_POST['search_key']); $search_ken=addslashes($_POST['search_ken']); $sql= <<<EOS SELECT * FROM moeinfo WHERE name like '%$search_key%' OR address like '%$search_ken%' EOS; /* if(substr(PHP_OS,0,3) == 'WIN') { $sql=mb_convert_encoding($sql, "SJIS", "EUC-JP"); } */ $result=$conn->query($sql); if(MDB2::isError($result)) { die($result->getMessage()); } $count=$result->numRows(); print "検索結果は" .$count. "件です。<br>"; if($count> 0){ ?> <table width="450" border="1" cellspacing="0" cellpadding="8"> <tbody> <tr><th>イベント名</th><th>開催地都道府県名</th></tr> <?php while($rs=$result->fetchRow(MDB2_FETCHMODE_ASSOC)) { if(substr(PHP_OS,0,3) == 'WIN') { $rs['name']=mb_convert_encoding($rs['name'], "EUC-JP", "SJIS"); $rs['address']=mb_convert_encoding($rs['address'], "EUC-JP", "SJIS"); } } ?> <tr><td aling="center"><?=$rs['name']?></td> <td><?=$rs['address']?></td> </tr> </tbody> </table> <?php } //mysql_free_result ($result) ; $result->free(); $conn->disconnect(); ?> </body> </html>

  • PHP
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

何故結果表示が while($rs=$result->fetchRow(MDB2_FETCHMODE_ASSOC)) のLoopを抜けてからになっているのでしょうか?書くとしたらLoopの内側に書かないとダメです。 while($rs=$result->fetchRow(MDB2_FETCHMODE_ASSOC)) { if(substr(PHP_OS,0,3) == 'WIN') { $rs['name']=mb_convert_encoding($rs['name'], "EUC-JP", "SJIS"); $rs['address']=mb_convert_encoding($rs['address'], "EUC-JP", "SJIS"); } ?> <tr><td aling="center"><?=$rs['name']?></td> <td><?=$rs['address']?></td> </tr> <?php } ?> なお、OSがWindowsかどうかでmb_convert_encodingしている意図はさっぱりわかりません。Windowsとそれ以外のOSで書き方に違いがあるわけはないのですが・・・・。もしWindowsとそれ以外で入力フォームや出力の文字セットを変えているとしても(そういうことをする意味がわかりませんが)MySQLにクライアントの文字セットを通知するだけで済む話です。 また、エスケープにaddslashesを使うのは如何なものかと。プレースホルダを使ってください。

kimikj8
質問者

お礼

shimix様、解答ありがとうございます。 while文の部分は、私の書き間違いでした。申し訳ありませんでした。 mb_convert_encodingの部分に関しては、私が知り合いから貰ったPHPの本(速攻!図解プログラミング PHP+MySQL)に、 『Windows版MySQLの場合保存データの文字コードがShift_JISのため、PHPファイル(文字コードはEUC-JP)の中で作成されたSQLを発行すると、文字化けした状態で格納されてしまいます。このため、Windowsで稼働している時のみ、mb_convert_encoding関数で、SQL文の文字コードを「EUC-JP」から「SJIS」へ変換します。』 と書いてありました。 しかし、while文をshimix様のご指摘通り直した結果、文字化けしてしまい、mb_convert_encodingの部分をコメントアウトしたら文字化けも解消されました。 まだまだ勉強不足ですよね。 あきらめずに頑張っていきます。 ありがとうございました。

その他の回答 (1)

  • memphis
  • ベストアンサー率40% (975/2395)
回答No.1

>指定されたモジュールが見つかりません。 そのエラーが出ているなら、貴方が構築した環境に問題があります。 たぶん、apacheかphpのどちらかに原因があるでしょう。 設定ファイル、DLLなど正しく設定もしくは保存されているかを確認して下さい。

kimikj8
質問者

お礼

memphis様 解答ありがとうございます。 memphis様のご指摘といろいろ調べた結果、DLLが正しく設定されていなかったため、起こった問題だということが分かりました。 ありがとうございました。

関連するQ&A

  • 指定されたモジュール・・・

    こんにちは。 最近「実践マスターPHP+MySQL」という本を使い、PHPの勉強を始めたばかりのものです。 PEARをインストールしてみようと思い、go-pear.batを実行したのですが、下記のようなメッセージが発生してしまいます。 PHP Warning: PHP Startup: Unable to load dynamic library 'c:\php\ext\mysql.dll' - 指定されたモジュールが見つかりません。 in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library 'c:\php\ext\mysql.so' - 指定されたモジュールが見つかりません。 in Unknown on line 0    ・    ・ メッセージボックスが表示され、Entを押すと継続されて、下記インストール手順のメッセージが表示されます。 Are you installing a system-wide PEAR or a local copy? (system|local) [system] : そのまま、対話式を実行していくと、とりあえずはインストールできたのですが、本当にこれできちんとインストールできたのか疑問に思います。 調べてみた結果、c:\php\extの中には「php_mysql.dll」はあったのですが、「mysql.dll」、「mysql.so」はありませんでした。検索したのですが、この2つのファイルはどこにも存在していませんでした。 どうしたらいいのでしょうか?

    • 締切済み
    • PHP
  • php.iniの修正

     こんにちは!最近Apache,PHP,MySQLをインストールしたんですが、今php.iniの修正に1つところが困ってます:  php.iniの中に“extension=php_mysql.dll”これ前の“;”を外すじゃない、 しかし、外してから、保存してApache2を再起動するとこんなメセージが出てくるですよ:“PHP Startup:unable to load dynamic library 'D:\PHP\ext\php_mysql.dll'-指定されたモジュールが見つかりません。” これは如何すればいいですか?分かる方がいましたら是非教えてください、お願いします!

    • ベストアンサー
    • PHP
  • PHPのインストールに成功したはずが…

    OSはWindowsXPです。 昨日、Apache2とphp5のインストールをしました。 本(PHP5.0+MySQL5.0で構築する最速webシステムという本です。)を見ながらやりました。 最後にphpinfo()というタグをうって localhostで見てみたら機能していました。 そして今日 パソコンを使おうと思って起動したら 「(Warning) php Startup:Unable to load dynamic library 'C./php/ext\php-mbstring.dll'-指定されたモジュールが見つかりません 」 というような文が出てきました。 この警告を出さないようにするためには どうしたらいいでしょうか? ちなみに、まだ MySQLはインストールしていません。 (これが原因でしょうか?) ご指導の方お願いします。

    • ベストアンサー
    • PHP
  • cronでエラー

    いつも参考にさせていただいております。 早速質問をさせていただきます。 PHPのプログラムをcronを動かしているのですが以下のエラーがでます。 ------------------------------ PHP Warning: Unknown(): Unable to load dynamic library './php_gd2.dll' - ./php_gd2.dll: cannot open shared object file: No such file or directory in Unknown on line 0 ------------------------------ ライブラリがないと怒られているようですが、この回避方法は ありますでしょうか? ご教授よろしくお願いいたします。 環境 PHP:Version 4.3.2 Apache:2.0.40 (Red Hat Linux)

    • ベストアンサー
    • PHP
  • PHPにおいてopensslを有効にする方法

    PHP(XAMPP使用)においてopensslを有効にする方法 FuelPHPというフレームワークを導入しようと思い、 「はじめてのフレームワークとしてのFuelPHP」という 電子書籍を購入しました。 その書籍内で、「opensslを有効にする」という項目があり、 php.ini内の指定の場所に、 extension=php_openssl.dll という記述を付け加えるようにと指示がありました。 その通りにしてみたのですが、 Apacheを起動する際に、 PHP Startup: Unable to load dynamic library 'C:\xampp\php\ext\php_openssl.dll' - 指定されたモジュールが見つかりません。 というエラーメッセージが出ました。 そこで、openssl.dllを下記サイトよりダウンロードして、 ( http://jp.softpicks.net/dll/php_openssl-dll-1966 … ) C:\xampp\php\extフォルダの中に、 openssl.dllを入れてみました。 しかし、Apacheを再起動すると、 下記のような「Warning」が2度出ます。 PHP Startup: openssl: Unable to initialize module Module compiled with build ID=API20090606,TS,VC9 PHP compiled with build ID=API20090626,TS,VC6 These options need to match 上記の状態から、どうしても解決出来ないでいます。 ご教授頂けましたら幸いです。宜しくお願い致します。 環境: Windows7 64bit XAMPP Version1.7.2 PHP Version 5.3.0

    • ベストアンサー
    • PHP
  • PHPspreadsheetのインストール

    Composerをインストールした後、コマンドプロンプトから以下のようにしてPHPspreadsheetをインストールしようとしましたが、エラーメッセージが出てきてインストールに失敗しました。 C:\Users\Shiro>composer require phpoffice/phpspreadsheet PHP Warning: PHP Startup: Unable to load dynamic library 'php_dg2.dll' (tried: C:\xampp\php\ext\php_dg2.dll (The specified module could not be found), C:\xampp\php\ext\php_php_dg2.dll.dll (The specified module could not be found)) in Unknown on line 0 Warning: PHP Startup: Unable to load dynamic library 'php_dg2.dll' (tried: C:\xampp\php\ext\php_dg2.dll (The specified module could not be found), C:\xampp\php\ext\php_php_dg2.dll.dll (The specified module could not be found)) in Unknown on line 0 Using version ^1.17 for phpoffice/phpspreadsheet ./composer.json has been created Running composer update phpoffice/phpspreadsheet Loading composer repositories with package information Updating dependencies Your requirements could not be resolved to an installable set of packages. Problem 1 - phpoffice/phpspreadsheet[1.17.0, ..., 1.17.1] require ext-gd * -> it is missing from your system. Install or enable PHP's gd extension. - Root composer.json requires phpoffice/phpspreadsheet ^1.17 -> satisfiable by phpoffice/phpspreadsheet[1.17.0, 1.17.1]. To enable extensions, verify that they are enabled in your .ini files: - C:\xampp\php\php.ini You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode. Installation failed, deleting ./composer.json. C:\Users\Shiro> メッセージではphp_dg2.dll が無いと言っていますが、xampp/php/ext の中にちゃんと在りますし、php.inファイルの中でも extension=php_dg2.dll を追加してあります。 またメッセージの中に、php と dll が2度繰り返される、ありえないファイル名C:\xampp\php\ext\php_php_dg2.dll.dll というのが見えますが、これはどういうことなのでしょうか。 同じインストールを数時間前に会社でやって上手く行きましたが、今自分の家で同じようにやっても出来ません。私のPCにウイルスでも入ったのでしょうか。 どなたか解決方法が分かる方がいらっしゃいましたら、お知恵を貸していただけないでしょうか?お願いいたします。

    • ベストアンサー
    • PHP
  • PHP5の拡張モジュールの関数を有効化するとエラーがでます。

    こんにちは。 いつもお世話になっております・・・。 PHP5+Apach2+MySQL4.0 Win環境で、インストールをしていたのですが・・。 <?php phpinfo(); ?>を、Apacheのドキュメントフォルダに 入れた所、ちゃんと表示されたので、インストール 自体は行えているのかな、と思うのです。 が、C:\Windows\php.ini の中に extension = php_mysqli.dll を足して Apacheを再起動させると Warning: PHP Start up:Unable to load dynamic library. c:/php/ext\php-mysqli.dll というエラーが2回繰り返し表示されてしまうのです。 php_mysqli.dllファイルは、c:/php/extフォルダに あったのを、システムフォルダ(C:\windows\system32)にもコピーしてあります。 なぜこのようなエラーが出てしまうのでしょうか・・・。 どうかご指導よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • undefined symbol: ap_php_snprintf

    php apcをインストールしましたが、次のエラーがLOGに出力されて APCが起動しません。 PHP Warning: Unknown(): Unable to load dynamic library '/usr/lib/php4/apc.so' - /usr/lib/php4/apc.so: undefined symbol: ap_php_snprintf in Unknown on line 0 環境は OS: redhatES4 apache Apache/2.0.52 (Red Hat) php PHP Version 4.3.9 apc APC-3.0.14 解決策をご教示いただきたく、お願いします

    • 締切済み
    • PHP
  • PHPとOracleの接続について

    oracle関数を使用したいのですが 『php.ini』の『extension=php_oci8.dll』を有効にして、ブラウザでPHPにアクセスしたら以下のような2つの警告が出ました。 1.プロシージャエントリポイントOCILobFreeTemporaryがダイナミックリンクライブラリOCI.dllから見つかりません。 2.Unknown():Unable to load dynamic library 'd:\php\extensions\php_oci8.dll'-指定されたプロシージャが見つかりません。 extension=php_oci8.dll』を無効にすればPHPは動きます。 環境は下記を使用しています。 NT:4.0 PHP:4.3.0 ORACLE:8.0.6 APACHE:1.3.27 ご存知の方はよろしくお願いいたします。

    • 締切済み
    • PHP
  • PHPからMySQLへ接続設定

    お世話になります Fedora core3を使って PHPとMySQLを設定しているのですが 上手くいきません。よろしくお願いします。 現状としては、PHPは動作しています。 MySQLもターミナルからは動作確認できています。 ところがPHPからMySQLにつながりません。 方法は $conn = mysql_connect($hostname, $usrname, $password) としています。 どこの設定を見ればいいのか等教えていただけないでしょうか? 環境 OS:fedora core3 Apache:Tera Termにてrpm -q apacheで調べたのですが文字化けしてわかりません^^; Fedora core3で標準で入っているものと思います PHP:PHP4.3.11、関係ないかもしれませんが、php -vでversionを調べようとすると PHP Warning:Unknown(): Unable to load dynamic library '/usr/lib/php4/msql.so と出ます 以上よろしくお願いします