Probleme en php ! mysql_fetch_array

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probleme en php ! mysql_fetch_array

par clam » 29 avr. 2005, 10:23

Ok merci pour toutes ces infos

Bonne journée à tous

par albat » 29 avr. 2005, 10:21

Content que cela fonctionne, Clam.
Le problème venait donc de l'absence d'apostrophes qui doivent entourer
la valeur de $pseudo puisque ce champ est de type chaîne de caractères.

Ton écriture ci-dessous fonctionne bien, mais elle n'est pas académique.
$sql = "SELECT * FROM `membres` WHERE `pseudo` = '$pseudo'"; 
Je te redonne donc la bonne écriture à utiliser :
$sql = "SELECT * FROM membres WHERE pseudo = '".$pseudo."'";
Explications :
- sortir les variables PHP de la requête SQL
- les apostrophes autour des noms de tables et de champs sont ajoutés
automatiquement par MySQL dans un but de prévention.
Ils ne sont utiles qu'au cas où ces noms seraient des mots réservés ou contiendraient des espaces.
Mais personne ici ne fait d'erreur aussi grossière, donc pas besoin de ces apostrophes-là ! ;)

par BFH » 29 avr. 2005, 09:59

albat prends exemple sur cyrano reste calme avec les nouveaux ! sinon =;

par clam » 29 avr. 2005, 09:56

Merci de vos réponse.
En fait g résolu le bp juste après avoir poster, donc dsl pour le post qui sert a rien.
Perso g mi:

$sql = "SELECT * FROM `membres` WHERE `pseudo` = '$pseudo'";

et sa marche nikel :)

par albat » 29 avr. 2005, 09:49

Merci de ton soutien, Cyrano !
Les variables PHP doivent être sorties du code SQL de la requête.
Ce n'est pas parce que certaines autres écritures peuvent fonctionner qu'elles sont à utiliser.
Prenez le réflexe de coder bien dès la première fois, ça vous économisera des heures de débuggage...

Hé les mômes, vous allez écouter de temps en temps ce que vous disent les anciens ? :evil:

par Cyrano » 29 avr. 2005, 09:43

Perso moi je dirais :
$sql = "SELECT * FROM membres WHERE pseudo = "$pseudo" ";
Cherche un sujet nommé "debutant en peril" j'avais le même problème.
Tss tss , quel mélange des genres....
$sql = "SELECT * FROM membres WHERE pseudo = '". $pseudo ."'";
Voilà, on ne mélange pas n'importe comment des chaines de caractère, du SQL et du PHP : ici, $sql et $pseudo, c'est du PHP, ce qui est entre les " ", c'est du SQL. Les concaténation entre les deux peuvent avantageusement respecter une syntaxe qui est déjà définie

par seayoung » 29 avr. 2005, 09:37

enfin il faut pas qu il le test le pb viens de la je pense :p

par BFH » 29 avr. 2005, 09:36

Perso moi je dirais :
$sql = "SELECT * FROM membres WHERE pseudo = \"$pseudo\" ";
Cherche un sujet nommé "debutant en peril" j'avais le même problème.

par albat » 29 avr. 2005, 09:35

Écritures recommandées :
$sql = "SELECT * FROM membres WHERE pseudo = '".$pseudo."'"; // si $pseudo est une chaine
$sql = "SELECT * FROM membres WHERE pseudo = ".$pseudo;      // si $pseudo est un numérique

par Gentoo Warrior » 29 avr. 2005, 09:32

tu as testé comme ça :
$sql = "SELECT * FROM membres WHERE pseudo = '$pseudo'";

par sadeq » 29 avr. 2005, 09:31

Cette erreur veut dire que la requête n'est pas valide syntaxiquement parlant et que sql l'a refusée.
Ta raquête :
$sql = "SELECT * FROM membres WHERE pseudo = $pseudo";

Vérifie si le nom de la table membres est bien ortographié et que la tabla existe
Vérifie si le nom du champ pseudo est bien orthographié et qu'il existe dans la table membres
Vérifie le type du champ pseudo :
1. si le type est numérique le format existant est bon (pseudo = $pseudo)
2. si le type est varchar (chaine de caractères) tu doit écrire :
pseudo= '$pseudo' (remarque les quotes qui entourent la variable)

Probleme en php ! mysql_fetch_array

par clam » 29 avr. 2005, 09:19

Bonjour, j'ai un ptit souci et je ne sais pas d'ou ça vient. Je ne pense pas que ce soit la syntaxe mais bon. Voila mon code:
<?php

$bdd = mysql_connect("127.0.0.1","root","") or die ("Impossible de se connecter au serveur");
mysql_select_db("site",$bdd);


if(isset($_POST['pseudo']))
	$pseudo = $_POST['pseudo'];
else
{
	echo "Le champ pseudo n'a pas été saisi !";
	include('inscription.php');
	exit (1);
}

$sql = "SELECT * FROM membres WHERE pseudo = $pseudo";
$result = mysql_query($sql,$bdd);
$membre = mysql_fetch_array($result);
if(isset($membre['id']))
{
	echo "Ce pseudonyme est déjà utilisé ! Veuillez en choisir un autre...";
	include('inscription.php');
	exit(1);	
}

....
J'obtiens l'erreur suivante:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\site team\inscription.confirm.php on line 18

Si vous pouviez m'aider merci :)