Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/01/2012, 12h32   #1
Nouveau Membre du Club
 
Inscription : janvier 2012
Messages : 64
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 64
Points : 25
Points : 25
Par défaut Incompréhension du résultat..

Bonjour, Voila, j'ai effectué une requete afin de connaitre un Id max dans une table. La requete est bonne puisque je l'ai testé sur mon SGBD. Mais lorsque je l'execute dans mon code php, cela donne :
Code :
id_max: Resource id #7 Erreur de syntaxe pr�s de 'SELECT id FROM newsletter_contenu WHERE id= (SELECT Max(id) from newsletter_cont' � la ligne 1
Mon code PHP est :
Code :
1
2
3
$id_max = 'SELECT id FROM newsletter_contenu WHERE id= (SELECT Max(id) from newsletter_contenu)';
$Reslt_rqte = mysql_query($id_max) or die(mysql_error());
echo("id_max: ".$Reslt_rqte);
Alors bien sur, le résultat etant spécial, j'ai essayé un utf8_decode():
Code :
1
2
3
$id_max = 'SELECT id FROM newsletter_contenu WHERE id= (SELECT Max(id) from newsletter_contenu)';
$Reslt_rqte =  utf8_decode(mysql_query($id_max) or die(mysql_error()));
echo("id_max: ".$Reslt_rqte);
Mais le résultat de id_max est 1 à la place de 86...

AU SECOURS! Je ne comprend pas mon erreur en ce moment...

Cordialement,

Ctesias
Ctesias est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 13h06   #2
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Si la requête fonctionne sous ton SGBD, et au vue de l'erreur, je pense qu'il y avait un problème d'encodage.

Mais en passant par en utf8_decode() cela te retourne 1. Étonnant. Ta base contient bien un id qui est à 86 ?
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 13h50   #3
Nouveau Membre du Club
 
Inscription : janvier 2012
Messages : 64
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 64
Points : 25
Points : 25
Et bien oui puisque c'est la réponse que m'a fourni le SGBD quand j'ai executé ma requete.

PAr contre, j'ai trouvé un article sur la fonction mysql_queyr qui dit cela: "Permet d'exécuter une requête SQL sur une ou plusieurs tables d'une base de données. Si la requête exécute une instruction: INSERT, DELETE ou UPDATE, une valeur booléenne sera retournée (0 ou 1). Dans le cas d'une requête de type SELECT, vous obtiendrez un identifiant de résultat."

Alors est-ce qu'il l'interprete comme un INSERT, DELETE ou UPDATE?
Ctesias est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 14h02   #4
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 726
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 726
Points : 3 293
Points : 3 293
Salut

Code :
SELECT id FROM newsletter_contenu WHERE id= (SELECT Max(id) from newsletter_contenu)
Pourquoi faire une sous-requête ?

Pourquoi pas ceci ?
Code :
1
2
SELECT MAX(id) AS max_id
FROM newsletter_contenu
C'est normal que tu obtiennes une ressource, car la fonction mysql_query() retourne une ressource.
La doc de Php -> mysql_query()

Faut que tu fasse un mysql_fetch_array() ou mysql_fetch_assoc() pour obtenir le résultat.
Code :
1
2
3
4
5
6
 
$max_query = 'SELECT MAX(id) AS max_id
FROM newsletter_contenu';
$max_rs =  mysql_query($max_query) or die(mysql_error());
$max = mysql_fetch_assoc($max_rs);
echo 'max_id : '.$max['max_id'];
J'ai rajouté un alias "max_id" à la requête, c'est plus pratique pour récupérer la valeur.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 15h37   #5
Nouveau Membre du Club
 
Inscription : janvier 2012
Messages : 64
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 64
Points : 25
Points : 25
Merci de vos réponses. Mais le echo($id) affiche 'Array'. Le echo echo("id :".$id['max_id']) affiche bien 86 par contre lui. Le problème, c'est que comme le $id equivaut a array, la valeur de la variable n'est pas bonne. et cela pose un problème puisque le requetes suivantes finissent en erreur.

JE sais pas si vous m'avez compris... Mais merci quand meme.
Ctesias est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 16h01   #6
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
Bonjour,

ben, il suffit de récupérer la première valeur du tableau.

Code :
1
2
3
4
5
6
7
 
$sql= "SELECT MAX(id) FROM newsletter_contenu";
$res= mysql_query($sql) or die(mysql_error());
$rows = mysql_fetch_row($res);
$id= $rows[0];
 
echo "max_id : $id";
__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h35.


 
 
 
 
Partenaires

Hébergement Web