これは、pdo ext を使用してデータベースに接続するための私の db クラスです。
class db
{
private $host;
private $dbname;
private $username;
private $password;
public function __construct($host,$db,$name,$pass)
{
$this->host=$host;
$this->dbname=$db;
$this->username=$name;
$this->password=$pass;
$dsn = 'mysql:'.$this->dbname.';'.$this->host;
try
{
$conn = new PDO($dsn, $this->username, $this->password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
echo 'ERROR: ' . $e->getMessage();
}
}
}
このようにログインクラスでdbクラスを呼び出します...
$host='localhost';
$db='techy_issue_tracker';
$name='root';
$pass='';
$base= new db($host,$db,$name,$pass);
ここに問題があります.loginクラス(拡張dbクラス)内でpdoクエリを作成するには、次の行を使用します...
$stmnt = $conn->prepare('SELECT id FROM users WHERE name :name OR email = :email');
という 2 つのエラーが生成されます.. 注意: 未定義の変数: conn... と 致命的なエラー: 非オブジェクトでのメンバー関数 prepare() の呼び出し...
すべての pdo を login クラス内に配置するだけでこれを修正できますが、まだ興味があります...どうやってオブジェクト (pdo クラスのインスタンスですか?) を別のクラスから呼び出しますか?
PDO を使用した PHP クラス ベースのユーザー システム - 非オブジェクトでメンバー関数 prepare() を呼び出すこの質問は興味深いですが、あまり理解していません :/
OOPをあまり練習しなかったので、良い説明をいただければ幸いです! ありがとう。