sql >> データベース >  >> RDS >> Mysql

PDO致命的なエラー:非オブジェクトでのメンバー関数prepare()の呼び出し

    コードにはいくつかの問題があります。

    2つは他の回答で説明されており、コードが機能するようになります (最終的にはすべてが台無しになりました)が、それでも間違ったアプローチであり、データベースに接続するオブジェクトの数は、所有しているオブジェクトの数倍になります。 。

    この方法でDatabaseConnectionクラスを変更します

    class DatabaseConnection{
        public $pdo;
        public function __construct(){
            $user = 'root';
            $pass = '';
            $dsn  = 'mysql:charset=utf8;dbname=test;host=localhost;charset=utf8';
            $opt  = array(
                PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            );
            $this->pdo = new PDO($dsn, 'root', '', $opt);
        }
    }
    

    この方法でLoginRegisterコンストラクターを変更します

    function __construct($db){
        $this->db= $db;
    }
    

    そして、この方法でregister.phpを作成します

    require_once "functions.php";
    $db = new DatabaseConnection();
    $user = new LoginRegister($db->pdo);
    

    次に、LoginRegisterで$this->dbを使用します $pdoの代わりに ずっと。

    $db接続をアプリケーションクラスの外部サービスにする主なアイデア。それ以外の場合は、軽蔑されたグローバルと同じですが、別の形式になります。



    1. postgresqlのpg_hba.confファイルでホスト名を指定するにはどうすればよいですか?

    2. Oracleで整数部分がゼロのときにゼロを削除する方法

    3. mysql regex_replace:置換で正規表現グループを使用する方法

    4. MySQLでのgroup_concat_max_lenの最大許容値はいくつですか?