前提・実現したいこと
PHP言語でPearを使用してDBからデータ取得のファイルを実装しています。
ある程度実装し、確認しようとしたところエラーが発生してしまったので、
お力を貸していただけると幸いです。
接続は問題なくできていて、while文の実行時にエラーが発生しています。
発生している問題・エラーメッセージ
Fatal error: Call to a member function fetchRow() on integer
該当のソースコード
PHP
1<?php 2 // DB接続(Pear) 3 require_once('MDB2.php'); 4 5 // データベースに接続 6 $mdb2 = connectDB(); 7 8 if( MDB2::isError( $mdb2 ) ) send_err( 'DB1 connect err' ); 9 10 // データの取得SQL 11 $sql = 'select ' . 12 ' name '. 13 'from m_tabel '. 14 'where 1 = 1 '. 15 'order by code '; 16 17 $types = [ 18 ]; 19 20 // プレースフォルダ 21 $sth = $mdb2->prepare( $sql, $types, MDB2_PREPARE_MANIP ); 22 23 // prepareエラーチェック 24 if ( MDB2::isError( $sth ) ) { 25 $mdb2->rollback(); 26 $mdb2->disconnect(); 27 send_err( 'DB1 prepare err' ); 28 } 29 30 // データのセット 31 $data = [ 32 ]; 33 34 // レコードの挿入 35 $result = $sth->execute( $data ); 36 37 if ( MDB2::isError( $result ) ) { 38 $mdb2->rollback(); 39 $mdb2->disconnect(); 40 send_err( 'DB1 execute err' ); 41 } 42 43 $sth->free(); 44 $datas = array(); 45 $iCnt = 0; 46 47 while ($row = $result ->fetchRow(MDB2_FETCHMODE_ASSOC)){ 48 49 $datas[$iCnt] = [ 50 'name' => $row['name'], 51 ]; 52 $iCnt++; 53 54 } 55 56 // ポートごとに駐輪された回数をカウント 57 for ($i = 0; $i < count($ports); $i++) { 58 echo $ports[$i]['name']; 59 } 60 61 // DB切断 62 $mdb2->disconnect(); 63 64 /** 65 * データベース接続 66 */ 67 function connectDB(){ 68 69 $sqltype = 'mysql'; // mysqlを使用 70 $server = 'localhost'; // サーバー 71 $password = 'XXXXX'; // パスワード 72 73 $dbname = 'XXXXXXXXXX'; // 接続するデータベース名 74 $user = 'XXXXXXXXXX'; // ユーザー名 75 76 // データベースに接続 77 $mdb2 = MDB2::connect($sqltype.'://'.$user.':'.$password.'@'.$server.'/'.$dbname.'?charset=utf8'); 78 79 //接続オブジェクトを返す 80 return $mdb2; 81 } 82 83 function send_err( $msg = 'err' ) { 84 $data = array( 'err' => $msg ); 85 echo json_encode( $data ); 86 exit; 87 } 88?>
補足情報(FW/ツールのバージョンなど)
実行サーバー:Linux
PHP 7.1
MySQL
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/27 23:26