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 11/03/2011, 23h54   #1
Membre du Club
 
Homme
Étudiant
Inscription : janvier 2011
Messages : 330
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 330
Points : 47
Points : 47
Par défaut ' erreur mysql_fetch_array()

Bonjours j'ai un soucis , quand j'exécute cette requête, j'obtiens l'erreur suivante:

Warning: mysql_fetch_array() expects parameter 1 to be resource, string given in

donc voila le code en question:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php 
 
 
$A=$_POST["annee"];
 
 
require("id_connexion.php");
 
 
 
 
$query="select civilite, nom  FROM `stid`.`ancien2` WHERE `ancien2`.`naissance` = '$A';";
 
$result= mysql_query($query) or die ('Erreur '.mysql_error());
 
while($data=mysql_fetch_array($query))
{
echo 'Voici les etudiants ayant obtenue leur diplome cette année la';
 
echo $data['civilite'];
echo " ";
echo $data['nom'];
 
 
}
 
?>
j'aimerais bien connaître mon erreur

merci d'avance
huître est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2011, 01h58   #2
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 587
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 587
Points : 861
Points : 861
enlève le point virgule dans la requete :
Code :
$query="select civilite, nom FROM `stid`.`ancien2` WHERE `ancien2`.`naissance` = '$A' ";
et c'est :
Code :
1
2
 
while($data=mysql_fetch_array($result))
c'est dans le message d'erreur, la fonction veut un paramètre de type ressource pas une chaine de caractère (la requete)...
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2011, 03h16   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
en dev il faut toujours activer le mysql.trace_mode (et surtout pas les or die, toujours faire des if sur les ressources ou is_ressource)

Code :
ini_set('mysql.trace_mode', true);
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2011, 04h25   #4
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Citation:
Envoyé par stealth35 Voir le message
... et surtout pas les or die
Oui enfin tu y vas un peu fort, sans dire que le "or die" soit le mieux que l'on puisse faire, ce n'est pas non plus le pire que l'on puisse faire, et toujours mieux (en phase de développement) que de ne rien faire...
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2011, 10h21   #5
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
un die() ne peut servir que pour un debug ponctuel.
Tu ne vas pas rechercher et enlever tous tes die() quand tu passes en production.

Etant donné qu'il existe pour mysql une méthode permettant d'avoir ou d'enlever les erreurs a volonté, il n'y a pas lieu de faire autre chose.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2011, 14h14   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
de plus ca arrête direct le code, et souvent on met le mysql_error dedans et/ou la requete en question, ce qui en production donne des indications sur la base, pour c'est vraiment quelque chose qu'il faut éradiquer, et pareil pour mysqli pas de or die non plus c'est mysqli_report
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2011, 04h36   #7
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
On est bien d'accord, avec quelques explications ça va tout de suite mieux

Non parce que tel que tu le disais au départ, avec tous les exemples et tutos qui utilisent le "or die", un débutant en te lisant pourrait se dire que ces exemples sont buggués ou non fonctionnels et ne pas s'intéresser au reste (donc à l'essentiel) à cause de cela...

Avec ton explication suivante - "or die" donne des infos qui pourraient être utilisées par un utilisateur malveillant - précédée de celle de sabotage - plutôt que de penser à les enlever un à un avant la phase d'exploitation, autant utiliser une autre méthode - on a une réponse plus argumentée et plus intéressante pour un néophyte qu'un simple "surtout pas"
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h24.


 
 
 
 
Partenaires

Hébergement Web