アプリ版:「スタンプのみでお礼する」機能のリリースについて

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)) {

どなたかご回答をなにとぞ宜しくお願いします。

A 回答 (3件)

$resultがエラークラスとして返ってきていますね。


SQLを発行した後で$result->getUserInfo()を出力するなりして調べてみてください。

あと、SQLの発行はMDB2のメソッドを使うのが自然ではないでしょうか。
    • good
    • 0

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

    • good
    • 0

> $result = execute_sql($conn, $sql);



この結果、$resultにnullとか返っちゃってるんじゃないですかね。

この回答への補足

ご指摘ありがとうございます。

ちなみにですが、下記の様な構文を書いてあります。

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のコンソール上で実行できました
下記の構文に間違いがあると言うことでしょうか?

補足日時:2009/10/14 11:47
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!