Classes simples utilisant oop php, essayant de passer l'objet db (de la classe db) à une autre classe (catégorie category) pour que je puisse obtenir le contenu de db.Passer l'objet db au style php oop ne fonctionne pas
db class db.php
class db {
//put your code here
private $hostname = "127.0.0.1";
private $dbname = "php_oop_crud";
private $username = "root";
private $password = "";
public $conn;
public $status = 0;
public function getConnection() {
$this->conn = null;
try {
$this->conn = new PDO("mysql:host:$this->hostname;dbname=$this->dbname", $this->username, $this->password);
// this return null if unsccessfull
$this->status = $this->conn->getAttribute(PDO::ATTR_CONNECTION_STATUS);
if ($this->status) {
echo "connected to db : " . $this->status;
return $this->conn;
}
} catch (PDOException $ex) {
echo "Can't connect to db " . $this->status;
error_log("Ayman :: {{$ex->getMessage()}} - {{$ex->getFile()}} - {{$ex->getLine()}}");
return $this->conn;
}
}
}
pass db object to category class in index.php
// Create db connection pass it to product and category objects
$databaseConn = new db();
$db = $databaseConn->getConnection();
// create object and send database object to class
// now we need to call the function who crearte tha actual connection getConnection();
$category= new category($db);
$category->read();
category class category.php
<?php
class category {
//put your code here
private $databaseConn;
private $tabel_name = 'categories';
public $id;
public $name;
public function __construct($db) {
$this->databaseConn = $db;
}
public function read() {
$sql = 'SELECT * FROM categories';
$query = $this->databaseConn->prepare($sql);
$isok = $query->execute();
$row= $query->rowCount();
echo "row : " . $row;
var_dump($row);
echo "isok : " . $isok;
var_dump($isok);
if ($isok) {
echo "the red process is done and ok <br/> category table";
} else {
echo "Cant get category ";
var_dump($isok);
}
}
}
Now the
var_dump($row)
andvar_dump($isok);
are always false , mean while I can connect successfully to db
false' 'execute()' 'de retour quand il y a une erreur. Ajoutez ceci après l'exécution: 'var_dump ($ isok-> errorInfo());' pour en savoir plus. – ishegg
@ishegg ($ isok) sera toujours booléen, donc si vous avez ce que vous suggérez l'erreur sera "Erreur fatale: Erreur non détectée: Appel à une fonction membre errorInfo() sur booléen" – Mvrk
Vous avez raison, je voulais dire " var_dump ($ query-> errorInfo()); ' – ishegg