- 締切済み
phpで作成した構文が上手く動きません 。
phpでmysqli構文が上手く動きません 質問します、よろしくお願いします。 現在 winVista、Xampp( apache、 php5、 mysql)にてプログラムの勉強をローカルで行っています。 ですが、書籍に載っていた以下のコードを実行してもエラーがでてうまく動きません。 幾ら調べてもわからず困っております、なにが原因でしょうか?ご教授をお願いいたします。 <?php /************************************************* * データベース操作 * */ require_once 'MDB2.php'; $sv = "localhost"; $dbname = "login_apri"; $user = "root"; $pass = "123456789"; $dsn = "$dbType://$dbUser:$dbPass@$dbHost/$dbName"; //---------------------------------------------------- // データベース接続 //---------------------------------------------------- function db_connect($dsn){ $conn =& MDB2::connect($dsn); // 接続に失敗したらメッセージを表示して終了します。 if (MDB2::isError($conn)){ die($conn->getMessage()); } return $conn; } //---------------------------------------------------- // 検索結果を多次元配列で受け取る //---------------------------------------------------- function select_arrays($conn, $sql){ $result = execute_sql($conn, $sql); // レコードの取得 $i=0; $data = array(); while ($rec = $result->fetchRow(DB_FETCHMODE_ASSOC)) { foreach( $rec as $key => $value){ $value = sjis2euc_for_Winodows($value); $data[$i][$key] = $value; } $i++; } // 検索件数 $count = $result->numRows(); // クエリー結果セットの開放 $result->free(); return array($data, $count); } // 検索件数 $count = $result->numRows(); // クエリー結果セットの開放 $result->free(); return array($data, $count); } /************************************************* ブラウザに表示されるエラーは以下の通りです。 Fatal error: Call to undefined method MDB2_Error::fetchRow() in C:\xampp\htdocs\HP\login_main\php_libs\module\dbtest3.php on line 32 32行目は while ($rec = $result->fetchRow(DB_FETCHMODE_ASSOC)) { どなたかご回答をなにとぞ宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- hyoro
- ベストアンサー率71% (5/7)
$dsnに指定している変数が定義されていないからではないでしょうか。 $dsn = "$dbType://$dbUser:$dbPass@$dbHost/$dbName"; の部分を下のように変更してみてください。 $dsn = "MDB2//$user:$pass@$sv/$dbname"; これでもエラーが出るようであれば、先の人が言われているとおり、パスが通っていないのではないかと思います。
- Crystalize
- ベストアンサー率57% (78/136)
こんにちは。 エラーの内容は「MDB2が定義されていない」というものです。 require_once 'MDB2.php'; で指定している、MDB2.phpへのパスは合っていますか? もしくは、MDB2.phpを用意していますか? 私の環境とは異なるので、エラー表示のみでチェックしただけになりますが、一度確認してみてください。