Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
utilisateurs:hypathie:tutos:php_connexion_mysql [08/07/2021 16:53] Hypathie [Objet PDO] |
utilisateurs:hypathie:tutos:php_connexion_mysql [08/07/2021 17:34] (Version actuelle) Hypathie [Singleton php] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== PHP connexion mysql ====== | + | ====== PHP singleton de connexion mysql ====== |
* Objet : code php de connexion | * Objet : code php de connexion | ||
Ligne 87: | Ligne 87: | ||
mysql -u root -p < ~/user/Test/nath_test.sql | mysql -u root -p < ~/user/Test/nath_test.sql | ||
</code> | </code> | ||
- | ===== Objet PDO ===== | + | ===== Singleton php ===== |
<code> | <code> | ||
Ligne 107: | Ligne 107: | ||
class MysqlSingleton | class MysqlSingleton | ||
{ | { | ||
- | const SQL_USER = 'root'; | + | const SQL_USER = 'toto'; |
const SQL_HOST = 'localhost'; | const SQL_HOST = 'localhost'; | ||
- | const SQL_PASS = 'arawak'; | + | const SQL_PASS = '********'; |
const SQL_DTB = 'nath_test'; | const SQL_DTB = 'nath_test'; | ||
private static $connect = null; | private static $connect = null; | ||
- | private $message = null; | + | private $message = null; |
- | private function __construct() | + | private function __construct() |
+ | { | ||
+ | // A singleton should not be instanced ! | ||
+ | } | ||
+ | protected static function firstConnexion() | ||
+ | { | ||
+ | if(is_null(self::$connect )) | ||
{ | { | ||
- | // A singleton should not be instanced ! | + | try |
- | } | + | |
- | protected static function firstConnexion() | + | |
- | { | + | |
- | if(is_null(self::$connect )) | + | |
{ | { | ||
- | try | + | self::$connect = new PDO('mysql:dbname='.self::SQL_DTB.';host='.self::SQL_HOST,self::SQL_USER ,self::SQL_PASS); |
- | { | + | echo "CREATION CONNEXION PDO MYSQL"; |
- | self::$connect = new PDO('mysql:dbname='.self::SQL_DTB.';host='.self::SQL_HOST,self::SQL_USER ,self::SQL_PASS); | + | } |
- | //self::$connect = new PDO('mysql:host=localhost;dbname=nath_test;charset=utf8','root', 'arawak'); | + | catch(PDOException $e) |
- | echo "CREATION CONNEXION PDO MYSQL"; | + | { |
- | } | + | $this->message=$e->getMessage(); |
- | catch(PDOException $e) | + | die(); |
- | { | + | |
- | $this->message=$e->getMessage(); | + | |
- | die(); | + | |
- | } | + | |
} | } | ||
- | return self::$connect; | ||
} | } | ||
+ | return self::$connect; | ||
+ | } | ||
- | protected function getStatus() | + | protected function getStatus() |
- | { | + | { |
- | return !is_null(self::$connect); | + | return !is_null(self::$connect); |
- | } | + | } |
- | protected function getErreurMessage() | + | protected function getErreurMessage() |
- | { | + | |
- | return $this->message; | + | |
- | } | + | |
- | + | ||
- | protected function disconnectMysql() | + | |
{ | { | ||
- | self::$connect = null; | + | return $this->message; |
} | } | ||
+ | |||
+ | protected function disconnectMysql() | ||
+ | { | ||
+ | self::$connect = null; | ||
+ | } | ||
} | } | ||
</code> | </code> | ||
Ligne 163: | Ligne 162: | ||
class GestionPDO extends MysqlSingleton | class GestionPDO extends MysqlSingleton | ||
{ | { | ||
- | private $PDO_connexion = null; | + | private $PDO_connexion = null; |
- | private $callingBy = null; | + | private $callingBy = null; |
+ | | ||
public function __construct($callingBy) | public function __construct($callingBy) | ||
{ | { | ||
Ligne 172: | Ligne 172: | ||
} | } | ||
- | /*public function queryFetch($query) | + | /*public function queryFetch($query) |
- | { | + | { |
- | return $this->securConnexion()->query($query)->fetch(); | + | return $this->securConnexion()->query($query)->fetch(); |
- | }*/ | + | }*/ |
- | public function logSqlErreur() | + | public function logSqlErreur() |
- | { | + | { |
- | + | // TODO | |
- | } | + | } |
- | public function securConnexion() | + | public function securConnexion() |
- | { | + | { |
- | if(is_null($this->PDO_connexion)) | + | if(is_null($this->PDO_connexion)) |
- | $this->getConnexion(); | + | $this->getConnexion(); |
- | return $this->PDO_connexion; | + | return $this->PDO_connexion; |
- | + | } | |
- | } | + | private function getConnexion() |
- | private function getConnexion() | + | { |
- | { | + | if(!$this->getStatus()) |
- | if(!$this->getStatus()) | + | $this->PDO_connexion = parent::firstConnexion(); |
- | $this->PDO_connexion = parent::firstConnexion(); | + | return $this->PDO_connexion; |
- | return $this->PDO_connexion; | + | } |
- | } | + | public function getErreurMessage() |
- | public function getErreurMessage() | + | { |
- | { | + | return parent::getErreurMessage(); |
- | return parent::getErreurMessage(); | + | } |
- | } | + | public function getStatus() |
- | public function getStatus() | + | { |
- | { | + | return parent::getStatus(); |
- | return parent::getStatus(); | + | } |
- | } | + | public function getCallingBy() |
- | public function getCallingBy() | + | { |
- | { | + | return $this->createBy ; |
- | return $this->createBy ; | + | } |
- | } | + | public function disconnectMysql() |
- | public function disconnectMysql() | + | { |
- | { | + | parent::disconnectMysql(); |
- | parent::disconnectMysql(); | + | } |
- | } | + | |
public function __destruct(){ | public function __destruct(){ | ||
- | echo " <br/> Destructeur de gestionnairePDO "; | + | echo " <br/> Destructeur de gestionnairePDO "; |
- | } | + | } |
} | } | ||
Ligne 236: | Ligne 235: | ||
} | } | ||
- | public function getDataTreeCountryStateCity() | + | public function getCountryById($id) |
- | { | + | { |
- | $q = "SELECT name FROM tree_country_state_city where id=1;"; | + | $q = "SELECT name FROM tree_country_state_city where id=" . $id . ";"; |
- | $result = $this->gestionPDO->securConnexion()->query($q)->fetch(); | + | $result = $this->gestionPDO->securConnexion()->query($q)->fetch(); |
- | //ou | + | //ou |
- | //$result = $this->gestionPDO->queryFetch($q); | + | //$result = $this->gestionPDO->queryFetch($q); |
- | return $result; | + | return $result; |
- | } | + | } |
} | } | ||
</code> | </code> | ||
Ligne 271: | Ligne 269: | ||
} | } | ||
- | public function getNomfromId($id) | + | public function getNomfromId($id) |
- | { | + | { |
- | $q = "SELECT name FROM users where id=" . $id . ";"; | + | $q = "SELECT name FROM users where id=" . $id . ";"; |
- | $result = $this->gestionPDO->securConnexion()->query($q)->fetch(); | + | $result = $this->gestionPDO->securConnexion()->query($q)->fetch(); |
- | //ou | + | //ou |
- | //$result = $this->gestionPDO->queryFetch($q); | + | //$result = $this->gestionPDO->queryFetch($q); |
- | return $result; | + | return $result; |
- | } | + | } |
- | + | ||
- | + | ||
- | //public function getDataTreeCountryStateCity() | + | |
- | //{ | + | |
- | // $query = "SELECT name FROM tree_country_state_city where id=1;"; | + | |
- | // $result = $this->data_tree_connexion->query($query)->fetch(); | + | |
- | // return $result; | + | |
- | + | ||
- | + | ||
- | //while($row = $result->fetch_array()) | + | |
- | //{ | + | |
- | // $sub_data["id"] = $row["id"]; | + | |
- | /// $sub_data["name"] = $row["name"]; | + | |
- | // $sub_data["text"] = $row["name"]; | + | |
- | // $sub_data["parent_id"] = $row["parent_id"]; | + | |
- | // $data[] = $sub_data; | + | |
- | //} | + | |
- | + | ||
- | //echo json_encode($data); | + | |
- | //} | + | |
} | } | ||
</code> | </code> | ||
Ligne 314: | Ligne 292: | ||
$dataTree = new DAO_dataTree('index.php'); | $dataTree = new DAO_dataTree('index.php'); | ||
- | $state = $dataTree->getDataTreeCountryStateCity(); | + | $country = $dataTree->getCountryById(1); |
- | var_dump($state); | + | var_dump($country); |
$dataUser = new DAO_dataUsers('index.php'); | $dataUser = new DAO_dataUsers('index.php'); | ||
Ligne 324: | Ligne 302: | ||
?> | ?> | ||
</code> | </code> | ||
+ | |||
+ | === Exécution du code === | ||
+ | |||
+ | <note tip> | ||
+ | Comme attendu, nous avons bien qu'une seule fois "CREATION CONNEXION PDO MYSQL" ! | ||
+ | </note> | ||
+ | |||
+ | * Dans le navigateur : **localhost/testSingleton/index.php** | ||
+ | |||
+ | Voir le wiki prendre en main apache pour installer l'alias ou le virtualhost "testSingleton". | ||
+ | |||
+ | <code retour> | ||
+ | CREATION CONNEXION PDO MYSQL | ||
+ | Constructeur GestionPDO.php calling by /home/hypathie/www/Test/public/data_tree.php. | ||
+ | Constructeur DAO_dataTree.php | ||
+ | |||
+ | /home/hypathie/www/Test/public/index.php:10: | ||
+ | array (size=2) | ||
+ | 'name' => string 'USA' (length=3) | ||
+ | 0 => string 'USA' (length=3) | ||
+ | |||
+ | |||
+ | Constructeur GestionPDO.php calling by /home/hypathie/www/Test/public/data_users.php. | ||
+ | Constructeur DAO_dataUsers.php | ||
+ | |||
+ | /home/hypathie/www/Test/public/\index.php:15: | ||
+ | array (size=2) | ||
+ | 'name' => string 'Jean-Marc' (length=9) | ||
+ | 0 => string 'Jean-Marc' (length=9) | ||
+ | |||
+ | </code> | ||
+ | |||
+ |