• 締切済み

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)) { どなたかご回答をなにとぞ宜しくお願いします。

みんなの回答

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.3

$resultがエラークラスとして返ってきていますね。 SQLを発行した後で$result->getUserInfo()を出力するなりして調べてみてください。 あと、SQLの発行はMDB2のメソッドを使うのが自然ではないでしょうか。

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

select_arrays の引数に入っている内容がおかしいのでは?

回答No.1

> $result = execute_sql($conn, $sql); この結果、$resultにnullとか返っちゃってるんじゃないですかね。

plathome20
質問者

補足

ご指摘ありがとうございます。 ちなみにですが、下記の様な構文を書いてあります。 function db_get_ken_data($conn){ $key_array = array(); $sql = <<<EOS SELECT * FROM m_ken EOS; list($data, $count) = select_arrays($conn, $sql); foreach($data as $array){ $key_array[$array['id']] = $array['ken']; } return $key_array; } SELECT * FROM m_ken; についてDBのコンソール上で実行できました 下記の構文に間違いがあると言うことでしょうか?

関連するQ&A