PDO
PHP Data Objects (PDO) est une extension définissant l'interface pour accéder à une base de données avec PHP.
Tips / Astuces
connect
function erp_connect_db_PDO() { //the VARIABLES in uppercase are stored in a config gile try { $login=DOLIBARR_LOGINMYSQL; // user name for you database $pass=DOLIBARR_PASSWORDMYSQL; // pass word to the database if you dont have a password $host=SERVERMYSQL; $dbname=DOLIBARR_DBMYSQL; $strConnection = 'mysql:host='.$host.';dbname='.$dbname; //Ligne 1 $arrExtraParam= array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"); //Ligne 2 $pdo = new PDO($strConnection, $login, $pass, $arrExtraParam); //Ligne 3; Instancie la connexion $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//Ligne 4 } catch(PDOException $e) { $msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage(); die($msg); } return $pdo; }
équivalent mysql_num_rows
$req=$pdo->prepare($member0); $req->execute(); $reqN=$req->rowCount(); if($reqN!=1){ echo "bla!"; }
loop results
foreach ($req as $result) { echo $result["MySQL_variable_name"]; echo "<br/>"; }
just one row
function produit_libelle2($id,$pdo) { $sql="SELECT ref, label FROM llx_product WHERE rowid=".$id; $stmt = $pdo->query($sql); $row =$stmt->fetchObject(); $produit=$row->label; return($produit); }
last insert id
$lastId = $stmt->lastInsertId();
next row
comment comparer les données de la ligne courante avec la précédente ou la suivante? pas possible de faire comme j'aimais avec mysql_result($row+1) ou mysql_result($row-1)
solution: ajouter une variable locale dans la boucle, du genre:
$current_discipline=""; //initialisation for(...) if($row['discipline'] != $current_discipline) { //est-ce que le champ discipline de la ligne courante est le même que la discipline courante? non -> ON CHANGE echo "<h1>" .$row['discipline'] ."</h1>"; $current_discipline=$row['discipline']; } else { //oui, on ne fait rien }
Doc 'n books
Tutos Vidéos
En attendant PDO
C'est presque du Beckett… Une librairie pour autoriser des fonctions mysql_ php5 sur du php7: PHP 7 Shim for ext/mysql