示唆されているように、接続注入手法を使用して、メイン クラスを動作させようとしています。注入コードは、別のファイルのクラスからのものです。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
誰かが親切に私がやったことを見て、具体的に私が間違っていることを指摘し、スクリプトを修正してスクリプトを動作させる方法を教えてください。