mysql vers PDO

TeeZor
Invité n'ayant pas de compte PHPfrance

03 déc. 2013, 16:05

Bonjour,

je travaille du PHP avec l'api PDO.

J'ai un PDO avec un singleton déjà configuré qui me permet de me connecter à tout moment à ma BDD par l'instruction $db = Base::getConnection();

J'ai récupéré un bout de code qui utilisait mysql comme API et que je souhaiterai traduire en PDO mais je ne sais pas comment m'y prendre. Voici le code:
$sql2 = "SELECT 'id_departement', 'departement'".
            " FROM 'departement'".
            " WHERE 'id_region' = ". $idr ."".
            " ORDER BY 'id_departement';";
    $connexion = mysql_connect($serveur, $admin, $mdp);
    mysql_select_db($base, $connexion);
    $rech_dept = mysql_query($sql2, $connexion);

   $code_dept = array();
    $nom_dept = array();
   
    while(false != ($ligne_dept = mysql_fetch_assoc($rech_dept)))
    {
        $code_dept[] = $ligne_dept['id_departement'];
        $nom_dept[]  = $ligne_dept['departement'];

    }

<! --
   code
-->
mysql_free_result($rech_dept);

Quelqu'un sait-il comment traduite cela en PDO?

Merci

Eléphant du PHP | 79 Messages

03 déc. 2013, 17:05

Bonjour,

comment faire un select en PDO :
<?php

$dsn = "mysql:dbname=maBaseDeDonnees;host=127.0.0.1;port=3306;" ;

$database = new PDO( $dsn, 'root', '' );

$filter = array( 1, 'grosland' ); // id = 1 & col1 = grosland

$sql = "SELECT * FROM maTable WHERE id = ? AND col1 = ?" ;
$req = $database-> prepare( $sql );
$req-> execute( $filter );

$result = $req-> fetchAll( PDO::FETCH_ASSOC );

print_r( $result );
Ciao

Eléphant du PHP | 79 Messages

03 déc. 2013, 17:26

Dans le répertoire racine de ton site tu as deux répertoires :

conf
lib

dans conf tu vas y mettre un fichier nommé 'database.ini'

dedans tu as ce code :

Code : Tout sélectionner

name = 'mydb' host = '127.0.0.1' port = '3306' user = 'root' pass = ''
dans lib, tu vas y mettre un objet php nommé 'database.php'

dedans tu as ce code :
<?php

class database
{
    public function __construct()
    {
        $conf = parse_ini_file( PATH_ROOT.'/conf/database.ini' );
        
        $dsn = "mysql:dbname={$conf['name']};host={$conf['host']};port={$conf['port']};" ;
        
        return new PDO( $dsn, $conf['user'], $conf['pass'] );        
    }
    
    public static function getConnection()
    {
        return new self();
    }
}
Sur L'index.php :
<?php 

define( 'PATH_ROOT', dirname( __FILE__ ) );

include_once './lib/database.php' ;

$db = database::getConnection();

function getDepartement( PDO $db, $regionId )
{
    $sql = "SELECT id_departement, departement 
            FROM departement 
            WHERE id_region = ? 
            ORDER BY id_departement" ;
    
    $req = $db-> prepare( $sql );
    $req-> execute( array( $regionId ) );
    
    return $req-> fetchAll( PDO::FETCH_ASSOC );
}

print_r( getDepartement( $db, 1 ) );
PS : en vu de ta requête SQL, ta base de données ne doit pas être bien faite ;). Réfléchis bien la dessus et si tu as la possibilité d'avoir des conseils la dessus (prof ou autre) profites en.

Ciao