MYSQL requête avec PDO

Fermé
Luc - 20 déc. 2011 à 10:50
maka54 Messages postés 698 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 - 3 janv. 2012 à 19:45
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

Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
20 déc. 2011 à 10:54
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
0
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 ;)
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
20 déc. 2011 à 11:17
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
0
Anoen Messages postés 196 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 11 septembre 2013 25
20 déc. 2011 à 11:19
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();
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci Melooo,


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


Bizzzz lol
0
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";


}

?>


:(
0
Anoen tu vois pas ou j'aurai pu me planter royalement? :s
0
maka54 Messages postés 698 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
20 déc. 2011 à 14:30
echo "tout est ok";
}else echo "c'est la merde";


}else quoi ??

tu n'as aucune condition ouverte avant
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
Modifié par Melooo le 20/12/2011 à 14:39
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 ?
0
maka54 Messages postés 698 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
20 déc. 2011 à 14:43
en effet, je suis pas tres bien réveillé ....
0
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
0
maka54 Messages postés 698 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
20 déc. 2011 à 14:45
ajoute
print_r($result->errorInfo());


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


et regarde ce qu'il est écrit
0
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" ^^
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
20 déc. 2011 à 15:13
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";
0
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 :'(
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
20 déc. 2011 à 15:33
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";
0
Rien du tout Melooo ... en tout cas je tiens à te remercier car depuis le début tu ne m'as pas abandonner ;))
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
20 déc. 2011 à 15:43
Ce que je t'ai fourni doit fonctionner,
essayer d'afficher ta requête pour voir si elle est bien construire ;)
0
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
0
<?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...
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
20 déc. 2011 à 15:53
La construction de ton where ne doit pas être bonne... vérifie en affichant ta requete
0
maka54 Messages postés 698 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
Modifié par maka54 le 20/12/2011 à 16:02
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
0
Anoen Messages postés 196 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 11 septembre 2013 25
2 janv. 2012 à 15:40
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;
0
maka54 Messages postés 698 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
3 janv. 2012 à 19:45
foreach($search as $key=>$searches)
 {
 $ou .= "titre LIKE '%$searches%'";
   if($key !=($total_resultat-1))
   {
   $ou .=" AND ";
   }
 }
0