rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

[PHP 5] Probleme de requete

Drewman, le jeudi 26 juillet 2007 à 18:00:15
Bonsoir, j'ai un petit souci avec une requete toute bête qui ne doit me renvoyer qu'une ligne :

Voici mon objet PDO :

<?php
$login='root';
$pwd='';
$db='mysql:host=localhost; dbname=edocks';

try{
$PDO = new PDO($db, $login, $pwd);
}
catch (PDOException $e){
die("Erreur de connexion : ".$PDO->getMessage() );
}
?>


Et ma requete

$sql = "SELECT `poste_deb`, `poste_fin` FROM `dossiers` WHERE `designation` = '".$_SESSION['log'][2]."'";
$query = $PDO->query($sql);
$resu = $query->fetchRow();


Enfin le message d'erreur

Fatal error: Call to a member function fetchRow() on a non-object in C:\Program Files\EasyPHP 2.0b1\www\edocks\include\send.php on line 20


Est-ce que quelqu'un aurait une idée ?
Avant avec les commandes type mysql_query() et mysql_fetch_assoc() sur exactement le même script et la même base ça fonctionnait au poil, mais depuis que je veux passer au PDO, il semble y avoir quelques soucis.
Configuration: Windows XP
Firefox 2.0.0.5
Répondre à Drewman  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Alain42, le jeudi 26 juillet 2007 à 18:24:59
est ce que ça ne viendrait pas des ' à l'envers dans ta requette ?
Répondre à Alain42

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Drewman, le jeudi 26 juillet 2007 à 18:41:52
Alors, j'ai écrit ce message en toute hâte en partant du boulot, voilà un peu plus d'explications :

- la table dossiers contient les champs suivants :

ID      |        ...         | poste_deb | poste_fin | designation |
------------------------------------------------------------­----
24      |        ...          |        10         |        44       |       LAP         |


- ma variable de session $_SESSION['log'][2] contient "LAP"

Mon ancien code était constitué des commandes mysql classiques et fonctionnait parfaitement

$query = mysql_query($sql, $connexion);
$resu = mysql_fetch_assoc($query);


Ce n'est donc je pense pas un problème de guillemets ou de syntaxe de la requête.
PDO en théorie se révèle extrèmement interessant, mais en pratique sur l'intégralité de mon site j'ai du faire des arrangements pour faire fonctionner le tout (je pense par exemple à $foo->fetchAll() pour pouvoir inclure deux requêtes dans deux boucles imbriquées, enfin ce n'est pas le problème ici.)

Donc pour te répondre Alain, non je ne crois pas que ça vienne de ça, j'ai bien regardé ma requête sous toutes les coutures et je ne vois pas.
Répondre à Drewman

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Alain42, le jeudi 26 juillet 2007 à 22:11:41
A la place de:
$sql = "SELECT `poste_deb`, `poste_fin` FROM `dossiers` WHERE `designation` = '".$_SESSION['log'][2]."'";

essayes:
$sql = "SELECT poste_deb, poste_fin FROM dossiers WHERE designation='".$_SESSION['log'][2]."' " ;
echo "Requette: ".$sql; // pour voir


$query = $PDO->query($sql) or die (mysql_error()); // pour voir l'erreur renvoyée
Répondre à Alain42

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Drewman, le vendredi 27 juillet 2007 à 10:09:07
Non ça ne fonctionne toujours pas, il passe dans le or die mais ne m'affiche pas l'erreur mysql. Mais je crois que cette commande ne fonctionne pas avec PDO.

Donc ce n'est clairement pas une question de guillemets, j'ai même remplacé '".$_SESSION['log'][2]."' par une valeur en dur mais toujours rien, ma requête est correcte.

Y aurait-il une histoire de buffer ou autre à vider avant, qui pourrait causer l'erreur ?
Répondre à Drewman

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Drewman, le vendredi 27 juillet 2007 à 12:26:23
J'ai affiché PDO::errorCode() et PDO::errorInfo() pour voir

Voilà ce qu'il me retourne :

Code : 00000

Code driver : 2014


Message :

Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.
Répondre à Drewman

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Drewman, le vendredi 27 juillet 2007 à 17:15:23
J'ai reglé mon problème en début d'après midi grâce à ce message d'erreur. J'ai rajouté dans mon fichier de connexion la ligne suivante :

$PDO->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);

L'autre solution était de mettre des closeCursor(); de partout après chaque fin de fetch();
Surement mieux niveau portabilité mais très agaçant ^^

En tout cas problème reglé.
Répondre à Drewman
[PHP] Différences entre version 4 et 5 (Résolu)Bonjour, Je m'interroge, car en général, lorsque la nouvelle version d'un logiciel sort, tout le monde se précipite pour le mettre à jour, surtout quand c'est gratuit. Or, je constate que PHP 5 est sortie depuis un petit moment, et... www.commentcamarche.net/forum/affich-1866180-php-differences-entre-version-4-et-5
Hebegeur Perl 5 et PHP/MySQL 5 ? (Résolu)Bonjour, J'aimerais savoir où je pourrais avoir un hébergeur de site web gratuit supportant: Perl 5 PHP 5 MySQL 5 ou PostgreSQL et +de 100Mo d'espace disque s'il vous plaît. j'ai déjà cherché sur Google mais je n'ai pas... www.commentcamarche.net/forum/affich-3842820-hebegeur-perl-5-et-php-mysql-5
[php] utf8_decode, utf8_encode marche pas (Résolu)Bonjour à tous, Voilà, je travail sur un serveur linux Fedora 8 x86_64 avec php 5.2.4 et apache 2.2.6. Je veuix utiliser les fonctions utf8_decode() et utf8_encode() mais quand je les utilise dans un simple code php, je n'ai aucun retour de... www.commentcamarche.net/forum/affich-6181174-php-utf8-decode-utf8-encode-marche-pas
Warning: rmdir(..): Directory not emptyIntroduction Le code de la fonction (compatible PHP 5 ou supérieur) Mise en garde pour la sécurité Introduction Lorsque vous tentez d'effacer un dossier en PHP, il peut arriver que vous rencontriez l'erreur suivante: Warning: rmdir(..):... www.commentcamarche.net/faq/sujet-12255-warning-rmdir-directory-not-empty
[PHP] Méthodes de débogageMéthodes de débogage I. Informations sur une variable I.1 echo I.2 print_r() I.3 var_dump() / var_export() I.4 Rediriger la sortie (ne pas afficher à l'écran) II. "Backtrace" ou rapport de contexte III. Bien utiliser les rapports... www.commentcamarche.net/faq/sujet-3158-php-methodes-de-debogage
[PHPMyAdmin] Problème chargement extension (Résolu)Bonjour, Voilà j'ai installé Apache 2.0.63, MySql 4.1, PHP 5.2.5, PHPMyAdmin pour faire un serveur. Lorsque je veux me connecter à phpmyadmin par le navigateur http://localhost/phpmyadmin/ il me met une erreur phpMyAdmin - Erreur PHP ne peut... www.commentcamarche.net/forum/affich-4952210-phpmyadmin-probleme-chargement-extension
PHP ne s'éxécute pas côté serveur (Résolu)Bonjour à tous, Je viens d'installer MySQL5 + PhpMyAdmin sur ma Dédibox. Seul problème, impossible de configurer PhpMyAdmin car le code PHP ne s'éxécute pas. Le navigateur me propose seulement de télécharger les fichiers PHP. PHP 5 est... www.commentcamarche.net/forum/affich-5552861-php-ne-s-execute-pas-cote-serveur
PHP ne peut charger l'extension mysql (Résolu)Bonjour, C'est un problème a priori commum à beaucoup de monde mais aucune des solutions trouvées ne marche dans mon cas. Ma config : XP Pro Apache : 2.0.63 PHP : 5.2.6 PhpMyAdmin : 2.11.7 MYSQL : 5.0.45 J'ai essayé de modifier le path et... www.commentcamarche.net/forum/affich-7067036-php-ne-peut-charger-l-extension-mysql
Télécharger EasyPHPEasyPHP est un environnement de travail packagé comprenant le serveur web Apache, le système de gestion de bases de données MySQL et le support du langage PHP. Il est fourni avec phpMyAdmin, une interface permettant de manipuler très facilement les... www.commentcamarche.net/telecharger/telecharger-82-easyphp
Apm 570179Filaire,Connexion ordinateur:Audio / Mic,Technologie sans-fil:Filaire,Page web du produit:http://www.apmfrance.com/articles/view.php?id=184,Type:Avec micro,Bande passante écouteurs:20-20000 Hz,Impédance:16 ohm www.commentcamarche.net/guide-achat/apm-570179-1040231-fiche-technique
PHP - Les variables d'environnement Les variables d'environnement sont, comme leur nom l'indique, des données stockées dans des variables permettant au programme d'avoir des informations sur son environnement. L'environnement, dans le cas du script PHP est : Le serveur Le client Ces... www.commentcamarche.net/php/phpenv.php3
Sécurité - Les cookies Quels sont ces étranges gateaux qu'un site web vous a sûrement déjà proposé? La plupart du temps, lorsqu'un serveur web propose un cookie, les utilisateurs ignorent ce terme et cliquent sur « OK » sans se préoccuper de son devenir. Un cookie est en... www.commentcamarche.net/securite/cookies.php3
Introduction à la programmation orientée objet Extrait de « Au coeur de ActiveX et OLE », de David Chappel "Au cours des 35 dernières années, les concepteurs de matériel informatique sont passés de machines de la taille d'un hangar à des ordinateurs portables légers basés sur de minuscules... www.commentcamarche.net/poo/poointro.php3
Toutes les réponses pour « [PHP 5] Probleme de requete »