MYSQL requête avec PDO

Luc -  
maka54 Messages postés 698 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   84
 
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
Luc
 
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   Statut Membre Dernière intervention   84
 
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   Statut Membre Dernière intervention   25
 
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
Luc
 
Merci Melooo,


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


Bizzzz lol
0
Luc
 
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
Luc
 
Anoen tu vois pas ou j'aurai pu me planter royalement? :s
0
maka54 Messages postés 698 Date d'inscription   Statut Membre Dernière intervention   80
 
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   Statut Membre Dernière intervention   84
 
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   Statut Membre Dernière intervention   80
 
en effet, je suis pas tres bien réveillé ....
0
Luc
 
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   Statut Membre Dernière intervention   80
 
ajoute
print_r($result->errorInfo());


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


et regarde ce qu'il est écrit
0
Luc
 
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   Statut Membre Dernière intervention   84
 
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
Luc
 
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   Statut Membre Dernière intervention   84
 
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
Luc
 
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   Statut Membre Dernière intervention   84
 
Ce que je t'ai fourni doit fonctionner,
essayer d'afficher ta requête pour voir si elle est bien construire ;)
0
Luc
 
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
Luc
 
<?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   Statut Membre Dernière intervention   84
 
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   Statut Membre Dernière intervention   80
 
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   Statut Membre Dernière intervention   25
 
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   Statut Membre Dernière intervention   80
 
foreach($search as $key=>$searches)
 {
 $ou .= "titre LIKE '%$searches%'";
   if($key !=($total_resultat-1))
   {
   $ou .=" AND ";
   }
 }
0