Comment accéder aux donnée retourner par PDO->query?

Eléphanteau du PHP | 19 Messages

23 nov. 2007, 15:02

salut Victory. J'ai créé un fichier où je n'ai mis que le code dont vous avez posté (en changeant bien sûr les paramètres de connion) mais il me semble ma requête n'est pas éxécutée. J'ai cette erreur:

Code : Tout sélectionner

Fatal error: Call to a member function fetchAll() on a non-object in C:\wamp\www\sms_admin_interface_v2\squelette\index.php on line 52
Donc c'est la variable
$requete
qui est vide il me semble.

Je ne sais pas pourquoi ma requête n'est pas éxécutée alors une éxécution en directe donne le resultat.
Je rappele que j'utilise WAMP2.0 et je n'ai fait ajouter les dll au niveau des extension pour activer PDO dans le fichier php.ini. Y'a il d'autres config à effectuer? J'ai essayé
J'ai essayé ceci:
$pdo->setAttribute(PDO::MYSQL_ATTR_DIRECT_QUERY,true)
mais rien ne marche.
Il me semble que la connexion à la base données bonne mais les requêtes ne son pas éécutée

Eléphanteau du PHP | 19 Messages

23 nov. 2007, 17:42

Lorsque j'essaye d'éxécuter la requête suivante
$sql = "SELECT profil FROM user_profil ";
		$requete = $db -> query ($sql) ;
J'ai ce code d'erreur et l'erreur info suivants (retournés par les fonctions

Code : Tout sélectionner

PDO::errorCode() et PDO::errorInfo()
):
Erreur code =3D000
Erreur infon = Array
Quelqu'un sait ce qui est à l'origine de l'erreur?
[/code]

Eléphanteau du PHP | 19 Messages

23 nov. 2007, 19:08

Quand je fait ceci après éxécution de ma requête:
 var_dump($db->errorInfo());
Je reçoi ceci:
array(3) { [0]=>  string(5) "3D000" [1]=>  int(1046) [2]=>  string(20) "No database selected" }
//le code "3D000"= 'invalide schéma"
Qu'est ce qui peut être à l'origine de cette erreur?

Mammouth du PHP | 1511 Messages

23 nov. 2007, 19:45

Regarde le tableau d'erreur (No database selected).
Tu as oublié de séléctionner ta base de données ;)

Eléphanteau du PHP | 19 Messages

23 nov. 2007, 20:00

Voici mon Momox
try
		{
		  $db = new PDO (CONST_CONNECT_DSN, CONST_CONNECT_DB_LOGIN, CONST_CONNECT_DB_PASSWORD);
		}
		catch (PDOException $e)
		{
		  echo "Erreur de connexion à la base de données".CONST_CONNECT_DB_NAME."---
		  ".$e -> getMessage();
		  die();
		}
		
		//*********************************************A effacer ********************
		$sql = "SELECT profil FROM user_profil ";
		$requete = $db -> query ($sql) ;
		if(!empty ($resultat))
			$resultat = $requete -> fetchAll ();
		else
		{
			 echo "Erreur code =".$db->errorCode()."<br/> ";
			 var_dump($db->errorInfo()); 
		}
		// Aucun résultat
		if (empty ($resultat))
		 echo 'Aucun résultat retourné';
		
		// Sinon
		else
		{
		  foreach ($resultat as $valeur)
		  {
			echo $valeur['profil']."\n";
		  }
		} 
Tu voies bien que j'ai appelé la requête de selection de la base de donnée qui est:
$db = new PDO (CONST_CONNECT_DSN, CONST_CONNECT_DB_LOGIN, CONST_CONNECT_DB_PASSWORD);
Le code d'erreur correspondant qui est
3D000 équivaut au messsage 'Invalaide Schém". Y a t il un schéma à choisir pour PDO?

Mammouth du PHP | 2937 Messages

23 nov. 2007, 20:01

Et vérifie ce que dit PhpMyAdmin lorsque tu essaies ta requête SQL. :wink:

Mammouth du PHP | 2937 Messages

23 nov. 2007, 20:12

Que vaut ta constante CONST_CONNECT_DSN ? L'as-tu bien définie comme suit :
define ('CONST_CONNECT_DSN', 'mysql:host=localhost;dbname=ta_base');
?

ViPHP
ViPHP | 4039 Messages

24 nov. 2007, 12:27

Et si tu essayes ceci, il t'affiche quoi ?
<?php
echo $db->getAttribute(PDO::ATTR_DRIVER_NAME);

?> 
J'irais dans le sens de victor; si l'erreur dit qu'aucune DB n'est sélectionnée (vérifie au passage que le nom de la BD est valide (accents et autre brols)), c'est qu'il y a un souci de ce côté.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 19 Messages

26 nov. 2007, 11:20

Salut à tous(tes),
Quand j'éxécute ma requête sur phpMyAdmin, elle est éxécutée correctement .
J'ai défini ma constante CONST_CONNECT_DSN comme suit:
define ('CONST_CONNECT_DSN', 'mysql:host=localhost;dbname=ta_base');

Eléphanteau du PHP | 19 Messages

26 nov. 2007, 11:42

Quand je mets ceci
echo $db->getAttribute(PDO::ATTR_DRIVER_NAME);
Je reçois mysql
mysql[

Eléphanteau du PHP | 19 Messages

26 nov. 2007, 12:03

Voici la configuration de mon fichier php.ini si ça peut aider de me debugger:
; Windows Extensions
; Note that ODBC support is built in, so no dll is needed for it.
; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)
; extension folders as well as the separate PECL DLL download (PHP 5).
; Be sure to appropriately set the extension_dir directive.

extension=php_pdo.dll
extension=php_pdo_mysql.dll
extension=php_pdo_user.dll
extension=php_mysql.dll

;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_exif.dll
;extension=php_fdf.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_ifx.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
;extension=php_mime_magic.dll
;extension=php_ming.dll
extension=php_msql.dll
;extension=php_mssql.dll

extension=php_mysqli.dll
;extension=php_oci8.dll
;extension=php_openssl.dll

;extension=php_pdo_firebird.dll
;extension=php_pdo_mssql.dll

;extension=php_pdo_oci.dll
;extension=php_pdo_oci8.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_pspell.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_soap.dll
;extension=php_sockets.dll
extension=php_sqlite.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
;extension=php_zip.dll


;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

Mammouth du PHP | 2937 Messages

26 nov. 2007, 16:16

Les extensions PDO et PDO MySQL sont actives. Donc, pas de problème de ce côté-là.
J'ai défini ma constante CONST_CONNECT_DSN comme suit:
define ('CONST_CONNECT_DSN', 'mysql:host=localhost;dbname=ta_base');
Est-ce que tu as correctement renseigné le nom du serveur MySQL, ainsi que celui de ta base de données ? (J'ai mis "localhost" et "ta_base" en guise d'exemples)

Eléphanteau du PHP | 19 Messages

27 nov. 2007, 11:20

Salut à tous(tes)

Mercis à tous et à toutes qui m'ont aidé à debugger mon installation PDO.
Finalement c'est résolut.

Je me suis procédé comme suit:
Dans le fichier php.ini, j'ai aujouté ceci
[PDO]
pdo.dsn.mydb="mysql:dbname=sms;host=localhost"

En fait il s'agit d'une alias du DSN.

Code : Tout sélectionner

Ensuite j'ai déclaré une constante dans mon fichier de connexion où je recupère le nom de l'alias comme suit:
define ("CONST_CONNECT_DSN","mydb"); 
Et j'ai passé cette constante à PDO lors de l'instantiation:

$dbcon = new PDO (CONST_CONNECT_DSN, CONST_CONNECT_DB_LOGIN, CONST_CONNECT_DB_PASSWORD);
Et tout est OK
Rappel:
////Récupération des paramètres de connexion à la base de données
	define ("CONST_CONNECT_DB_LOGIN","root");
	define ("CONST_CONNECT_DB_PASSWORD","");

Mammouth du PHP | 2937 Messages

27 nov. 2007, 17:43

Dans ce cas, n'oublie pas de mettre le tag "Résolu" en éditant le premier message de ce sujet. :wink:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 nov. 2007, 19:07

Dans ce cas, n'oublie pas de mettre le tag "Résolu" en éditant le premier message de ce sujet. :wink:
:afraid:
Tu devrais ouvrir plus de sujets au lieu de passer ton temps à aider :lol:

(le Résolu passe par le bouton fait pour Image :-$ :wink: )

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute