• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ブラウザにテーブルのレコードが表示されません)

ブラウザにテーブルのレコードが表示されない

このQ&Aのポイント
  • CodeIgniterを使用して、MySQLのテーブルの一覧をブラウザ上で表示させる際に、レコードが表示されない問題が発生しています。
  • 質問のPHPコードを見ると、テーブルの情報が取得されていない可能性が高いです。
  • 対処法としては、$this->db->get('blogs')->result_array() の部分を確認し、テーブルの情報が正しく取得されているか確認する必要があります。

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

  • ベストアンサー
回答No.4

スミマセン。セミコロンが抜けてましたね。 $query = $this->db->get('blogs'); です。 ログファイルなしの開発はあり得ないので、 パーミッションなどを確認して、ログファイルの出力ができるようにしてみてください。 ログファイル・ログディレクトリは、Webサーバデーモンからの書き込み権限が必要です。 config/config.phpの「$config['log_path'] = '';」設定が空であれば、デフォルトの 「application/logs/」ディレクトリにログファイルが作成されます。 「$config['log_path']」にパスを設定しているのであれば、 そのパスにログファイルが作成されます。(書き込み権限があれば) 下記の設定で、データベース関連のエラーが出力されます。 === [ config/database.php ] ======================= : $db['default']['db_debug'] = TRUE; : ==============================================

ogikei1415
質問者

お礼

セミコロンをつけたらなんと表示できました! ありがとうございます! そして6cc70ef9d187のおっしゃる通りlogsのパーミッションを書き換えたところ、ログも正常に作成されました。 本当にありがとうございます。 ただ少し腑に落ちない点があるのですが、6cc70ef9d187が最初におっしゃっていた3番の自動でDBを読み込む設定では、 何故正常にレコードが表示されなかったのでしょうか。 そこだけが未だに疑問です。

その他の回答 (3)

回答No.3

下記のように、ログ出力して「APPPATH/application/logs/log-2012-07-??.php」ログファイルを確認してみてください。 === [ config/database.php ] ======================= : $db['default']['db_debug'] = TRUE; : ============================================== === [ models/blogs.php ] ========================= class Blogs extends CI_Model { public function __construct() { parent::__construct(); $this->load->database(); } public function getBlogs() { $query = $this->db->get('blogs') // 検索件数ログ出力 log_message('debug', 'NUM ROWS: ' . $query->num_rows()); // SQLログ出力 log_message('debug', 'SQL: ' . $this->db->last_query()); if ($query->num_rows() > 0) { return $query->result_array(); } return FALSE; } } ===============================================

ogikei1415
質問者

補足

ご回答ありがとうございます。 プログラムを上記のように変更しました。 すると、ブラウザでは Parse error: syntax error, unexpected T_STRING in /var/www/html/igniterapp/application/models/blogs.php on line 15 というメッセージが出ました。 また、$config['log_threshold'] = 0;だったので、$config['log_threshold'] = 4;にconfig.phpを変更いたしました。 しかし、/application/logs/配下にindex.phpしか存在しておらず、ログファイルが作成されていない状態です。 php.iniも見てみたのですが、特に変化はありませんでした。 データベースの設定などがおかしいのかと思い、試しにwordpressをインストールしてみたのですが、 正常にデータベースに接続でき、インストールすることができました。 何度も申し訳ございません。 よろしくお願いいたします。

回答No.2

シェルコマンドで以下を確認してみてください。 mysqldデーモンがTCP3306ポートでリッスンしているか $ netstat -ln |grep 3306 mysqldデーモンにTCPで接続できるか $ mysql -u mysql --password=password -P 3306 -h localhost igniter_db

ogikei1415
質問者

補足

お返事ありがとうございます。 どちらもうまくいく状態です。 $ netstat -ln |grep 3306 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN $ mysql -u mysql --password=password -P 3306 -h localhost igniter_db Welcome to the MySQL monitor. ・ ・ ・ 色々調べてみたのですが原因が全くわかりません・・・。 よろしくお願いいたします。

回答No.1

データベースに接続されていません。 データベースに接続するには、 1.CI_Loaderでロードする。 $this->load->database(); 2.モデルクラスロード時に接続する。 $this->load->model('blogs', 'blogs', TRUE); 3.autoload.phpで自動接続する。 (お勧めしません。) の3通りあります。 通常は、モデルクラス内で、(1.)を実行します。 # models/blogs.php <?php class Blogs extends CI_Model { public function __construct() { parent::_construct(); $this->load->database(); } public function getBlogs() { return $this->db->get('ci_sessions')->result_array(); } } #controllers/helo.php <?php class Helo extends CI_Controller { public function __construct() { parent::__construct(); } public function index () { $this->load->model('blogs'); $data = array ('head_title' => 'index', 'content' => 'index'); $data['records'] = $this->blogs->getBlogs(); $this->load->view('layout/mylayout', $data); } } モデルクラスの使い方はこちらにあります。 http://www.ci-guide.info/basic/model/ http://www.ci-guide.info/practical/core/model/

参考URL:
http://www.ci-guide.info
ogikei1415
質問者

補足

ご回答ありがとうございます。 6cc70ef9d187に教えていただいた1の方法と3の方法を試してみましたが、 結果は変わりませんでした。 データベースやテーブルの作成が間違えているのでしょうか? mysql -umysql -p >show databases; >show tables; コマンドで、igniter_dbとblogsテーブルの確認はできます。 情報が少なくて申し訳ないのですが、もし何か考えられる原因がございましたらご教授願えればと思います。 よろしくお願いいたします。

関連するQ&A