MYSQL requête avec PDO

Bonjour,

Pourriez vous me dire comment je pourrais effectuer la même requête mais avec PDO??
   $query = mysql_query("SELECT * FROM look WHERE $ou");
   $rows = mysql_num_rows($query);
   if($rows) // mettre la variable adaptée
{
echo $row;
}


Voilà et moi ça ne fonctionne pas car j'accède à ma BBD avec PDO comme ceci:

<?php
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=magicland', 'root', 'root', $pdo_options) or die('Impossible de se connecter à la BDD');
    


?>


Merci à vous

15 réponses

  • Votes
  • Date
  • Date décroissante
  1. Salut,
    Si tu ne veux pas utiliser PDO, pourquoi ne pas faire appel à ta base de données comme ceci :
    // code local
    $dblogin="login";
    $dbpass="pass";
    $dbhost="host";
    $dbname="db_name";
    
    mysql_connect($dbhost, $dblogin,$dbpass) or die("erreur de connexion au serveur");
    mysql_select_db($dbname) or die("erreur de connexion a la base de donnees");
    ?>
    

    Sinon, pour ta requête regarde ce lien :
    https://www.php.net/manual/fr/pdo.exec.php
    1. Merci beaucoup Melooo,

      Ta façon à l'air d'être beaucoup plus simple.. mais PDO, sincèrement, est il vraiment utile?? Et du fait que je l'ai activé sur MAMP ne va t-il pas m'empecher de procéder comme tu viens de me le dire plus haut?

      Merci à toi ;)
      1. Pour être tout à fait franche, je me suis jamais penchée sur le cas "PDO".
        Donc je te conseille de lire ceci :
        http://www.siteduzero.com/tutoriel-3-34790-pdo-interface-d-acces-aux-bdd.html#ss_part_1
        qui répertorie les avantages de PDO...
        Essayes de faire comme je viens de te l'expliquer et tu verra bien si tu as une erreur ;) sinon tu devras désactiver PDO
        1. En fait ce que t'as donné Melooo va être prochainement abandonné. On préconise PDO.

          Pour effectuer ta requête avec PDO, tu dois utiliser
          $result = $bdd->query('TA_REQUETE');

          Ensuite pour compter, il te suffit de faire un foreach combiné à la fonction count();
          1. Merci Melooo,

            Je vais essayer ça et je te tiendrai au courant dans la journée,

            Bizzzz lol
            1. Merci Anoen à toi aussi,

              le problème c'est que j'ai déjà créer un foreach avant et j'ai essayé de faire à peu près comme tu m'as dis mais je ss assez novice et ça ne fonctionne pas.
              <?php
              
              include('bdd.php');
              
              function resultat_recherche($search)
              {
              $ou ="";
              $search = preg_split('/[\s]+/',$search);
              
              $total_resultat = count($search);
              
              foreach($search as $key=>$searches)
               {
               $ou .= "titre LIKE '%$searches%'";
                 if($key !=($total_resultat-1))
                 {
                 $ou .=" AND ";
                 }
               }
                 $result = $bdd->query("SELECT * FROM cinefilms WHERE $ou");
                 $rows = count($result);
                 if($rows)
              {
              echo "tout est ok";
              }else echo "c'est la merde";
              
              
              }
              
              ?>
              


              :(
              1. echo "tout est ok";
                }else echo "c'est la merde";


                }else quoi ??

                tu n'as aucune condition ouverte avant
                1. Si la :
                  if($rows) 
                  { 
                  echo "tout est ok"; 
                  }else echo "c'est la merde"; 
                  

                  Ajoute peut être les accolades après le else
                  Quelle erreur as-tu ?
                2. en effet, je suis pas tres bien réveillé ....
              2. Bah si:
                if($rows) // si la variable existe..
                {
                echo "tout est ok"; // alors on affiche ce message
                }else echo "c'est la merde"; //a l'inverse celui-ci

                J'utilise ce système depuis que j'ai appris le MySQL et ça a toujours très bien fonctionné... c'est juste pour vérifier en fait
                1. ajoute
                  print_r($result->errorInfo());


                  après
                  $result = $bdd->query("SELECT * FROM cinefilms WHERE $ou");


                  et regarde ce qu'il est écrit
                  1. Cela ne m'affiche rien :/

                    Et pour rep à Melooo
                    $query = mysql_query("SELECT * FROM look WHERE $ou");
                       $rows = mysql_num_rows($query);
                       if($rows) // mettre la variable adaptée
                    { 
                    echo "tout est ok"; 
                    }else echo "c'est la merde";
                    


                    Là ça m'affiche "c'est la merde" ^^
                    1. mysql_num_rows compte le nombre de lignes que dégage ta requête...
                      essayes plutôt :
                       if($rows >= 1) // mettre la variable adaptée
                      { 
                      echo "tout est ok"; 
                      }else echo "c'est la merde";
                      
                  2. Toujours "la merde" Melooo

                    Le problème vient de mysql_num_rows incompatible avec PDO...

                    La seule chose que je vois avec PDO c'est que des inconvénients lol

                    Un petit problème comme ça est entrain de se transformer en quelque chose d'irréalisable :'(
                    1. Alors j'ai jamais vu le PDO alors pas sur de ce que je vais te dire :
                      $query= 'SELECT * FROM look WHERE $ou';
                      
                      $req = $dbh->query($query);
                      
                      $result = $req->fetchAll();
                      
                      echo '<p>Cette requête retourne '.count($result)." enregistrements.</p>\n";
                      
                    2. Rien du tout Melooo ... en tout cas je tiens à te remercier car depuis le début tu ne m'as pas abandonner ;))
                    3. Ce que je t'ai fourni doit fonctionner,
                      essayer d'afficher ta requête pour voir si elle est bien construire ;)
                  3. Je vais laisser tomber, je vais aller directement sur le site ou j'ai appris le mysql et PDO, j'espère qu'ils vont réussir à me répondre ;)

                    Bye et merci à tous
                    1. <?php
                      
                      include('bdd.php');
                      
                      function resultat_recherche($search)
                      {
                      $ou ="";
                      $search = preg_split('/[\s]+/',$search);
                      
                      $total_resultat = count($search);
                      
                      foreach($search as $key=>$searches)
                       {
                       $ou .= "titre LIKE '%$searches%'";
                         if($key !=($total_resultat-1))
                         {
                         $ou .=" AND ";
                         }
                       }
                         
                      $query= 'SELECT * FROM look WHERE $ou';
                      
                      $req = $dbh->query($query);
                      
                      $result = $req->fetchAll();
                      {
                      echo '<p>Cette requête retourne '.count($result)." enregistrements.</p>\n";
                      }
                      
                      
                      }
                      
                      ?>
                      


                      Resultat page blanche...
                      1. La construction de ton where ne doit pas être bonne... vérifie en affichant ta requete
                      2. echo $query; 


                        et test ta requête directement dans phpmyadmin

                        si çà marche, tu test ce code :

                        $query= 'ta requete sql'; 
                        $rs = $bdd->prepare($query); 
                        $error = $rs->execute(array()); 
                        if (!$error) { 
                         print_r($rs->errorInfo()); 
                        }else{ 
                         $rows = $rs->fetchAll(); 
                         print_r($rows); 
                        }


                        au passage, faut savoir : soit $dbh, soit $bdd, mais c'est ta variable de connexion à pdo qu'il faut mettre
                    2. Je sais que je réponds un peu tard ^^'
                      Mais effectivement ta requête n'est pas bonne :
                      'SELECT * FROM look WHERE $ou';

                      devrait plutôt être :
                      'SELECT * FROM look WHERE nomduchamp='.$ou;
                      1. foreach($search as $key=>$searches)
                         {
                         $ou .= "titre LIKE '%$searches%'";
                           if($key !=($total_resultat-1))
                           {
                           $ou .=" AND ";
                           }
                         }