2

示唆されているように、接続注入手法を使用して、メイン クラスを動作させようとしています。注入コードは、別のファイルのクラスからのものです。connection.php の図 A を参照してください。

class qcon{

public static $conn;

function dbcon()
{


     if (empty($conn)) 
     {
         $host = 'x';
         $username = 'x';
         $password = 'x';
         $dbname = 'x';
         $conn = mysqli_connect($host , $username  , $password ,$dbname) or die("Oops! Please check SQL connection settings");
     }

     return $conn;
}

}

ここに、メイン クラス内のメソッドであるクラス インジェクション コードがあります。図 B の class.php を参照してください。

    class dbcats {
    var $conn;
    public function __construct(qcon $dbcon)
    {
        $this->conn = $dbcon;
    }

function getResult(){

            $result = mysqli_query($this->conn , "SELECT * from member" ); // Error see end of question
            if ($result) {
                return $result;
            } 
            else {
                die("SQL Retrieve Error: " . mysqli_error($this->conn));
            }
        }
}

最後に、Web ページ内で行った呼び出しについては、図 C を参照してください。

$db1 = new qcon();
$db1->dbcon();
$helper = new dbevent($db1);
$result = $helper->getResult();

上記は以下を引き起こしています

Warning: mysqli_query() expects parameter 1 to be mysqli, object given in C:\xxxxxxxxxxxxxx\webpage.php on line 35

誰かが親切に私がやったことを見て、具体的に私が間違っていることを指摘し、スクリプトを修正してスクリプトを動作させる方法を教えてください。

4

2 に答える 2

2

あなたのコードには多くの問題があります。ここに改訂されたコードがあります(自分で違いを見つけてください)

 class Qcon
 {

    public static $conn;

    public static function connection()
    {

        if (empty(self::$conn)) {
            $host = 'x';
            $username = 'x';
            $password = 'x';
            $dbname = 'x';
            self::$conn = mysqli_connect($host, $username, $password, $dbname) or die("Oops! Please check SQL connection settings");
        }

        return self::$conn;
    }
}

その後:

$helper = new dbevent(Qcon::connection());
$result = $helper->getResult();
于 2013-08-23T13:23:22.753 に答える
2

返された を処理しません$conn

$db1 = new qcon();
$db1->dbcon();//This line returns the connection
$helper = new dbevent($db1);
$result = $helper->getResult();

このようにする必要があります。

$db1 = new qcon();
$conn = $db1->dbcon();
$helper = new dbevent($conn);
$result = $helper->getResult();
于 2013-08-23T13:19:21.473 に答える