Page 1 sur 1

Début select en PDO

Posté : 16 oct. 2013, 22:05
par pacphil
Bonjour j'aurais besoins d'un exemple d'un select nouvel version.

voici l'ancien aurait il un membre sympa pour me dire comment modifier cela :oops:
	  if($_POST['email']==$_POST['email_2'])
      {      
      //On verifie sil ny a pas deja un utilisateur inscrit avec le pseudo choisis
	  $texts_exist_nom=mysql_query("SELECT nom FROM comptes WHERE nom='".$_POST['nom']."'") or die (mysql_error());
	  $test_nom_nb=mysql_num_rows($texts_exist_nom);
	  if(!$test_nom_nb==1)
	  {
      //On verifie sil ny a pas deja un utilisateur inscrit avec l' email choisis
	  $texts_exist_email=mysql_query("SELECT email FROM comptes WHERE email='".$_POST['email']."'") or die (mysql_error());
	  $test_email_nb=mysql_num_rows($texts_exist_email);
	  if(!$test_email_nb==1)
	  {	
	  

Re: Début select en PDO

Posté : 17 oct. 2013, 09:13
par Mazarini
J'ai trouvé un bon exemple dans la doc PHP :
try {
    $hostname = "servername";
    $dbname = "dbname";
    $username = "username";
    $pw = "password";
    $pdo = new PDO ("mysql:host=$hostname;dbname=$dbname","$username","$pw");
  } catch (PDOException $e) {
    echo "Failed to get DB handle: " . $e->getMessage() . "\n";
    exit;
  }
      $query = $pdo->prepare("select name FROM tbl_name");
      $query->execute();
      
      for($i=0; $row = $query->fetch(); $i++){
        echo $i." - ".$row['name']."<br/>";
      }

      unset($pdo); 
      unset($query);

Re: Début select en PDO

Posté : 17 oct. 2013, 10:22
par moogli
Tout le code qui fait appel a pdo doit être dans le try car execute ou fetch peuvent lever des exceptions ;)

@+

Re: Début select en PDO

Posté : 17 oct. 2013, 11:55
par pacphil
Bonjour, j'ai lu que l'on pouvais faire un script configuration comme en PHP 4

Exemple ici mais en PDO
<?php
/*** mysql hostname ***/
$hostname = 'localhost';
/*** mysql BD ***/
$dbname = 'annonce';
/*** mysql username ***/
$username = 'root';
/*** mysql password ***/
$password = '';
try {
    $dbh = new PDO("mysql:host=$hostname;dbname=".$dbname."", $username, $password);
    }
catch(PDOException $e)
    {
    /*** ERREUR de connexion ***/
    echo 'Echec de la connexion : ' . $e->getMessage();
    exit;
    }
    
?>

$texts_exist_nom = $dbh->exec("SELECT email FROM comptes WHERE email='".$_POST['email']."'");    
$data = $texts_exist_nom->fetch(PDO::FETCH_NUM);  
/*** place dans la table de l'email ***/ 
if (!$data[0] == 1) { 
Je me trompe peut-être car j'essaye de comprendre le fonctionnement

Re: Début select en PDO

Posté : 17 oct. 2013, 12:06
par pacphil
bonjour et pour un insert je fait cela ?
               $count = $dbh->exec("INSERT INTO comptes (idX, idm, nom, pass, email, sexe, ip, date, quipass, heure, heurepass)
                                          VALUES ('', 
						                          '".mysql_real_escape_string($idm)."', 
								                  '".mysql_real_escape_string($nom)."', 
								                  '".$pass1."', 
								                  '".mysql_real_escape_string($email)."', 
								                  '".mysql_real_escape_string($sexe)."', 
								                  '".mysql_real_escape_string($ip)."', 
								                  '".mysql_real_escape_string($date)."',
								                  '".mysql_real_escape_string($quipass)."', 
								                  '".mysql_real_escape_string($heure)."', 
								                  '".mysql_real_escape_string($heurepass)."')");
Faut il toujours ajouté try avannt l'insert comme l'exemple que je viens de trouvé sur le net svp?
<?php
// Data connexion (server_address, base de données, nom, mot de passe)
$hostdb = 'localhost';
$namedb = 'tests';
$userdb = 'username';
$passdb = 'password';

try {
  // Connexion à la base de donnée
  $conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb);
  $conn->exec("SET CHARACTER SET utf8");      // Sets encoding UTF-8

  //Définir une requête d'insertion
  $sql = "INSERT INTO `sites` (`name`, `category`, `link`)
    VALUES
      ('Courses - Tutorials', 'education', 'coursesweb.net'),
      ('PHP-MySQL Course', 'programming', 'coursesweb.net/php-mysql'),
      ('English Courses', 'foreign languages', 'www.marplo.net/engleza')";
  $count = $conn->exec($sql);

  $conn = null;        // Disconnect
}
catch(PDOException $e) {
  echo $e->getMessage();
}
?>

Re: Début select en PDO

Posté : 17 oct. 2013, 12:56
par xTG
Tout le code qui fait appel a pdo doit être dans le try car execute ou fetch peuvent lever des exceptions ;)

@+
Pas dans ce cas là, de base ce sont des warnings si on active pas la gestion des erreurs par exception.

Savoir si on utilise ou non le try..catch revient à savoir comment on configure PDO :
http://fr2.php.net/manual/fr/pdo.error-handling.php

Re: Début select en PDO

Posté : 17 oct. 2013, 13:15
par pacphil
Bonjour merci de vos réponse

script config
<?php
/*** mysql hostname ***/
$hostname = 'localhost';
/*** mysql BD ***/
$dbname = 'annonce';
/*** mysql username ***/
$username = 'root';
/*** mysql password ***/
$password = '';
try {
    $dbh = new PDO("mysql:host=$hostname;dbname=".$dbname."", $username, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
    }
catch(PDOException $e)
    {
    /*** ERREUR de connexion ***/
    echo 'Echec de la connexion : ' . $e->getMessage();
    exit;
    }
    
?>
incluse mon script config dans le script ici dessous cela serait il fonctionnel ? (par rapport a ma , premier question )
$texts_exist_nom = $dbh->exec("SELECT email FROM comptes WHERE email='".$_POST['email']."'");    
$data = $texts_exist_nom->fetch(PDO::FETCH_NUM);  
/*** place dans la table de l'email ***/
if (!$data[0] == 1) {

Re: Début select en PDO

Posté : 17 oct. 2013, 13:37
par Mazarini
$texts_exist_nom->rowCount() pour voir le nombre de ligne.

Jette un oeil sur la doc PDO pour voir les fonctions que tu peux utiliser (http://fr2.php.net/manual/en/class.pdostatement.php).
Par exemple, la fonction bindparam (http://fr2.php.net/manual/en/pdostatement.bindparam.php) est un bon moyen de passer des variables.

Re: Début select en PDO

Posté : 17 oct. 2013, 16:23
par pacphil
Bon je reviens a mon ancien système :priere:

Re: Début select en PDO

Posté : 20 oct. 2013, 21:48
par pacphil
voilà la solutions merci quand même de votre aide
 
try
{
 $bdd = new PDO('mysql:host=localhost;dbname=mabase', 'root', '');
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}
 
 $reponse = $bdd->query("SELECT count(*) as total FROM comptes WHERE email='".$_POST['email']."'");

if($reponse->fetch(PDO::FETCH_OBJ)->total == 0){
     // --- pas de compte
}else{
    // --- compte trouvé
}