Problème requête

Mammouth du PHP | 686 Messages

02 nov. 2008, 21:28

J'effectue une requete sur ma table SQL et mon $nbr est toujours null alors que j'ai des enregistrements dans ma table
<?php include("connect_panier.php");
			MYSQL_CONNECT($serveur,$utilisateur,$mdp) or die ("Connexion impossible");
			MYSQL_SELECT_DB($db) or die ("Connexion à la base $base impossible");
			$numero_commande = "1";
			$sql = mysql_query("SELECT * FROM '1'");
			$nbr = mysql_num_rows($sql);
			if(!isset($nbr)){
			echo "<p style=\"margin-top:20px; margin-bottom:0;\" align=\"center\"><font face=\"Arial\" color=\"#990000\"><span style=\"font-size:10pt;\">$numero_commande $nbr Vous n'avez aucun article dans votre panier</span></font></p>";
			}
			else{
			include("corps_panier.php");
			echo $nbr;
			}
			echo $nbr;
			?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 nov. 2008, 21:43

mysql_num_rows() te retourne le nombre d'enregistrements trouvés par ta requête ou FALSE en cas d'erreur. Si tu n'obtiens pas un nombre, c'est qu'il y a eu une erreur.

S'il y a une erreur, c'est vraissemblablement que le paramètre que tu lui passes n'est pas bon. Cela veut dire que ta variable $sql ne contient pas une Ressource correcte. Cela veut dire que le résultat de mysql_query() n'est pas bon. Ce qui veut dire qu'il y a un problème avec ta requête.

Tu peux le vérifier en testant le résultat de mysql_query(), et connaitre les messages d'erreur éventuels avec un mysql_error() ou simplement en testant ta requête directement dans phpMyAdmin :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 686 Messages

02 nov. 2008, 21:47

ca marche si je met SELECT * FROM `1` et dès que je passe une variable comme SELECT * FROM '$numerocommande' ca marche pu. Il veut les guillemets inverse lorsque j'ecrit `1`.
En revanche si j'ecrit un tout petit nom de variable avec les guillemets inversés tel que `$num` ca fonctionne ... :shock:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 nov. 2008, 01:03

Alors les apostrophes classique (') servent en SQL à délimiter une chaine de caractère. En revanche les apostrophes inversées (`) permettent à MySQL (et à lui uniquement) de protéger le nom d'une table ou d'un champ, ce qui permet (hélas ?) de leur donner n'importe quel nom.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

03 nov. 2008, 09:24

:!: J'ajouterai que :
- pour alléger l'écriture de la requête (et faciliter sa lecture)
- pour éviter d'utiliser des mots réservés (date, field, etc.) ou des noms avec des caractères compliqués (espaces, accents, etc.)
il est recommandé de ne pas utiliser les apostrophes pour les noms de tables et de champs.

Mammouth du PHP | 686 Messages

03 nov. 2008, 15:54

donc l'apostrophe inversée il faut sd'en servir uniquement pour les noms de table ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 nov. 2008, 16:00

Si tu arrives à ne pas l'utiliser, c'est que tu utilises que des noms standards. Donc, si tu ne l'utilises nul part, c'est le must ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 686 Messages

03 nov. 2008, 20:07

des noms standars c'est des noms sans chiffre et qui ne sont pas reservés ?
j'ai des tables ou s'est des numero et je dois les mettre donc c'est pas standar ?

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

04 nov. 2008, 19:32

des noms standars c'est des noms sans chiffre et qui ne sont pas reservés ?
Les chiffres sont acceptés dans les noms de champs et de tables,
à condition que le 1er caractère soit une lettre.
exemples : table01, champ427 sont des noms valides.
j'ai des tables ou s'est des numero et je dois les mettre donc c'est pas standar ?
Gni ? :shock:

Mammouth du PHP | 686 Messages

07 nov. 2008, 22:42

Oula oui en efefet je reformule lol
J'ai des tables qui ont comme unique nom un chiffre. Il faut donc que je mette les guillemets inverse car il ne s'agit pas de noms standars

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

08 nov. 2008, 00:07

Il vaut mieux que tu les renommes surtout ! :evil:

Les apostrophes inversées, c'est comme une couche de peinture sur un mur pourri :
ça paraît joli et sauve les apparences, mais ça s'écroulera sous peu.

Mammouth du PHP | 686 Messages

08 nov. 2008, 11:20

ca merite d'etre clair ! :roll: