Comment modifier ce Code PHP mySQL_connect et l'adapter en PDO ???

Eléphanteau du PHP | 20 Messages

07 oct. 2017, 13:35

Bonjour à tous.
J'essaie d'adapter un script déjà codé avec mysql_connect pour la connexion à la Base de Données MYSQL en PDO.
Mais ce qui me bloque est que les Requêtes SQL (UPDATE - INSERT INTO, ...) disponibles dans le Code sont suivi d'une ou de plusieurs Fonctions dont dbQuery(), dbFetchAssoc(), dbFetchRow(), etc.
Alors, aidez-moi à modifier le Fichier du CODE ci-dessous avec les fonctions qui y sont pour réussir à l'adapter à la Connexion MySQL PDO au lieu de mysql_connect.

Code : Tout sélectionner

<?php // constante de connexion et d'identification define("HOST","localhost"); define("BASE","cheg"); define("USER","root"); define("PASS",""); define("DSN","mysql:host=".HOST.";dbname=".BASE); try { // connexion à la base de donnée $bdd = new PDO(DSN, USER, PASS); } catch (PDOException $e) { // gestion des erreur avec PDO echo "Database Error Connexion!: " . $e->getMessage() . "<br/>"; } /* MYSQL CONNECTION (Originale que j'essaie de changé en PDO) $dbConn = mysql_connect ($dbHost, $dbUser, $dbPass) or die ('MySQL connect failed. ' . mysql_error()); mysql_select_db($dbName) or die('Cannot select database. ' . mysql_error()); */ // LES FONCTIONS A ADAPTER AUX REQUETE CONNEXION PDO: function dbQuery($sql) { $result = mysql_query($sql) or die(mysql_error()); return $result; } function dbAffectedRows() { global $dbConn; return mysql_affected_rows($dbConn); } function dbFetchArray($result, $resultType = MYSQL_NUM) { return mysql_fetch_array($result, $resultType); } function dbFetchAssoc($result) { return mysql_fetch_assoc($result); } function dbFetchRow($result) { return mysql_fetch_row($result); } function dbFreeResult($result) { return mysql_free_result($result); } function dbNumRows($result) { return mysql_num_rows($result); } function dbSelect($dbName) { return mysql_select_db($dbName); } function dbInsertId() { return mysql_insert_id(); } // Une requête UPDATE qui appelle après la fonction dbquery() définit ci-dessus: $pin = (int)$_POST['pin']; $id = $_POST['id']; $sql = "UPDATE tbl_accounts SET pin = $pin WHERE user_id = $id"; $result = dbQuery($sql); // Une requête SELECT qui appelle après les fonctions dbquery(), dbNumRows() et dbFetchAssoc() définies ci-dessus: $user_id = $_SESSION['user_id']; $sql = "SELECT * FROM tbl_accounts WHERE acc_no = $sacc_no AND user_id = $user_id"; $results = dbQuery($sql); if(dbNumRows($results) > 0) { extract(dbFetchAssoc($results)); // Une requête INSERT INTO qui appelle après la fonction dbquery() définit ci-dessus: $sql = "INSERT INTO tbl_trans (tx_no, tx_type, amount, date, description, to_accno, status, tdate, comments) VALUES ('$tx_no', 'debit', $amt, NOW(), '$desc', '$sacc_no', 'SUCCESS', '$date_of', '$comments')"; dbQuery($sql); ?>
Merci d'avance chers amis.

Avatar de l’utilisateur
Administrateur PHPfrance
Administrateur PHPfrance | 7420 Messages

16 oct. 2017, 17:59

Bonjour,

Vu comment est structuré ton code, j'aurai personnellement plutôt opté pour une migration vers les fonctions mysqli_* plutôt que vers PDO.

Tu as un tuto à cet effet ici :
faq-tutoriels/passer-mysql-mysqli-pdo-t276282.html

Par ailleurs il suffit que tu cherches dans la doc le nom de la fonction mysql_* que tu veux migrer pour que la doc t'indique leur équivalent mysqli_ ou PDO. Par exemple : http://php.net/mysql_query
Quand tout le reste a échoué, lisez le mode d'emploi...