mysql_query() の実行結果は常に false です
1) test という名前の既存のデータベースがあり、このデータベースには Student テーブルが 1 つだけあります。
属性名: ID、Name、Email。
2) データベース接続と操作をクラス DatabaseManager にカプセル化し、クラス StudentDetailsDataManager を拡張して学生情報を取得してみます。
3) 問題: テスト データベースに接続でき、SQL ステートメントは問題なくデータベースでテストされましたが、SQL ステートメントを実行した mysql_query() の結果は常に false になります。何が問題なのかわかりませんか?
コードは次のとおりです。
データベース操作基本クラス: DatabaseManager
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> //DatabaseManager.php <?php class DatabaseManager{ protected $host; protected $name; protected $user; protected $psw; protected $connection; protected $close_flag; public function __construct($connection,$close_flag){ $this->connection = $connection; $this->connection = $close_flag; } protected function db_open(){ if(empty($this->connection)){ $this->connection = mysql_connect($this->host,$this->user,$this->psw); if (!$this->connection) { $this->db_handle_error_connetion(); return false; } if (!mysql_select_db($this->name,$this->connection)) { $this->da_handle_select(); return false; } } } public function db_close(){ if($this->connection) mysql_close($this->connection); } protected function db_handle_error_connetion(){ echo 'Failed connetion'; } protected function db_handle_select(){ echo 'Failed access database!'; } } ?>
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> //StudentDetailsDataManager.php <?php require 'DatabaseManager.php'; class StudentDetailsDataManager extends DatabaseManager{ public function __construct($connection="",$close_flag=true){ parent::__construct($connection, $close_flag); $this->host = "localhost"; $this->user = "root"; $this->psw = "root"; $this->name = "test"; $this->db_open(); } public function getStudentInfo($ID,&$data){ //$query = "SELECT * FROM student WHERE ID ='$ID'"; $query = "select * from student where ID = '$ID'"; $result = mysql_query($query); //print_r($result); if (!$result) { echo "result is empty!!"; return false; } $data = mysql_fetch_array($result,MYSQL_ASSOC); mysql_free_result($result); } } ?>
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> <?php require_once 'StudentDetailsDataManager.php'; $stuDataManager = new StudentDetailsDataManager(); $ID = "DA123456"; $data=NULL; $stuDataManager->getStudentInfo($ID, $data); $stuDataManager->db_close(); echo $data["ID"]; ?>