Kodumu refactor çalışırken, PHP OOP öğrenme.

2 Cevap php

Sonra ben bu kod çalıştı, ben sınıfları nasıl çalıştığını anladım Düşünce:

class user
  {
  var $dbcon;

  var $dbinfo;
  var $con;    
  var $error;

  function dbConnect()
    {

    $this->dbinfo['server'] = "localhost";
    $this->dbinfo['database'] = "foolish_faith";
    $this->dbinfo['user'] = "user";
    $this->dbinfo['password'] = "password";

    $this->con = "mysql:host=".$dbinfo['server']."; dbname=".$dbinfo['database'];
    $this->dbcon = new PDO($con, $dbinfo['user'], $dbinfo['password']);
    $this->dbcon->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $this->error = $this->dbcon->errorInfo();

    if ($error[0] != "")
      {
      print "Error!";
      print_r($error);
      }
    }
  }

Şimdi sadece bu hatayı tükürür:

Fatal error: Uncaught exception 'PDOException' with message 'invalid data source name' in E:\PortableApps\xampp\htdocs\dbcon.php:24 Stack trace: #0 E:\PortableApps\xampp\htdocs\dbcon.php(24): PDO->__construct('', NULL, NULL) #1 E:\PortableApps\xampp\htdocs\login.php(4): user->dbConnect() #2 {main} thrown in E:\PortableApps\xampp\htdocs\dbcon.php on line 24

Ben sınıfları söz konusu olduğunda bu bilgi benim eksikliği ile ilgisi var eminim herkes, ben ne yapıyorum yanlış görebilir miyim?

2 Cevap

$this->con = "mysql:host=".$dbinfo['server']."; dbname=".$dbinfo['database'];
$this->dbcon = new PDO($con, $dbinfo['user'], $dbinfo['password']);

> Operatörü - Bir sınıf örneğinin değişkenleri acces zaman kullanmak zorunda. Bu durumda $this->dbinfo yerine $dbinfo kullanımı ve $this->con yerine $con arasında olur. Sen sol tarafta doğru yapılabilir, ancak sağ tarafta bazı özlemişim.

Bağlantı dizesinde boşluk koymayın. ("; dbname=" ";dbname=" olmalıdır.)

Ayrıca, bazı sınıf örnek değişkenleri önünde ($this->con, $this->dbinfo vesaire) bir $this-> eklemeniz gerekir örnek bir çift vardır.