class dbConnection {
public $pdo;
public function __construct() {
$this->dbConnect();
}
public function dbConnect() {
if((count($_POST) == 6)&&($_GET['a'] == "connect")) {
$host = $_POST['host'];
$port = $_POST['port'];
$username = $_POST['username'];
$password = $_POST['password'];
$database = $_POST['database'];
try{
$this->pdo = new PDO('mysql:host='.$host.';dbname='.$database.';port='.$port, $username, $password);
echo 'Connection successful!';
return $pdo;
}
catch(PDOException $e){
echo 'Error: ' . $e->getMessage();
}
}
}
}
class Group extends dbConnection { //Class for group, for ex. employe and employers.
public $name; // Name of group
public $pdo;
public function __construct ($_name, $conn) {
$this->pdo = $conn;
$this->name = $_name;
}
public function getGroupList() {
if(isset($this->pdo)) {
try
{
$conn = $this->pdo;
$conn ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //to catch exceptions
$stmt = $pdo -> query('SELECT id, Name, Skills FROM '.$this->name); //sql query with group name
$list = $stmt->fetchAll(PDO::FETCH_NUM); //fetch statement into array
$stmt -> closeCursor();
unset($stmt);
return var_dump($list); //gives pure data
}
catch(PDOException $e)
{
return 'There was some error: ' . $e->getMessage();
}
}
else {
$pdo;
}
}
}
et exécution:Appel à la méthode non définie PDO :: setAttribute()
$conn = new dbConnection;
$workers = new Group("workers", $conn);
$workers->getGroupList();
J'obtiens l'erreur:
Call to undefined method dbConnection::setAttribute() on line:
$conn ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //to catch exceptions
J'essaie de résoudre ce, Je ne sais pas pourquoi php traite l'objet PDO comme une méthode. Je n'ai aucune idée. Et je dois écrire plus de lettres. Dans ce contexte, un objet dbConnection est référencé par un objet dbConnection. Dans ce contexte,
J'ai utilisé celui-ci. Mais merci à la fois pour la clarification, j'apprendrai la classe singleton l'autre jour. – maszynka