ホームページ  >  記事  >  バックエンド開発  >  mysql_query() の実装結果は常に false です

mysql_query() の実装結果は常に false です

WBOY
WBOYオリジナル
2016-06-13 13:10:271166ブラウズ

mysql_query() の実行結果は常に false です
1) test という名前の既存のデータベースがあり、このデータベースには Student テーブルが 1 つだけあります。
属性名: ID、Name、Email。
2) データベース接続と操作をクラス DatabaseManager にカプセル化し、クラス StudentDetailsDataManager を拡張して学生情報を取得してみます。
3) 問題: テスト データベースに接続でき、SQL ステートメントは問題なくデータベースでテストされましたが、SQL ステートメントを実行した mysql_query() の結果は常に false になります。何が問題なのかわかりませんか?

コードは次のとおりです。
データベース操作基本クラス: DatabaseManager

PHP コード
<!--

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!';
        }
    }

?>



------
派生クラス: StudentDetailsDataManager
PHP コード
<!--

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);
        }
    }

?>



----
StudentDetailsDataManager インスタンスを使用して学生情報を取得します
PHP コード
<!--

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"];
?>



-----解決策---------
mysql_error ちょっと見てみてください。あなたは知っているでしょう
------解決策---------
public function __construct($connection,$close_flag) {
$this->connection = $connection;
$this->connection = $close_flag;
}
そのような重大なエラーさえ見えないのでしょうか?

また
if (!mysql_select_db($this->name,$this->connection)) {
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。