IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Erreur de SQL ! [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2012
    Messages : 253
    Par défaut Erreur de SQL !
    Bonjour a tous, j'ai une erreur de sql :

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''matable' WHERE 'matable'.'ID'=1' at line 1.
    Voici une partie de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     <?php
    //on se connecte à phpadmin. 
    mysql_connect("localhost", "root", ""); 
    mysql_select_db("test"); // On séléctionne la base de donnée test sur laquelle on veut travailler. 
    ?>
    <?php  
    mysql_select_db("matable"); //on doit récupérer la nouvelle donnée
    if(isset($_POST['armeesdiv']) AND isset($_POST['position']))//On verifie si les variables sont initialisées{
            $armeesdiv = mysql_real_escape_string(htmlspecialchars($_POST['armeesdiv'])); //On protege contre les scripts
    	    $position = mysql_real_escape_string(htmlspecialchars($_POST['position'])); //On protege contre les scripts
    $resultSelect = mysql_query("SELECT 'id', 'armeesdiv' FROM 'matable' WHERE 'matable'.'ID'=$position") OR die('Erreur de SQL !<br>'.mysql_error());//On selectionne dans la BdD
    J'essais de mettre une variable en guise de numero pour l'id et ca ne passe pas, il y a erreur.

    le reste du code est bon, c'est en ajoutant cette variable apres l'id qu'il y a toujours une erreur.

    J'ai fait divers essais, je sais plus que faire, j'ai besoin d'aide, merci pour votre aide.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pour entourer le nom des éléments mysql c'est ` et pas ', tu aussi ne rien mettre s'il n'y a pas d'ambiguité.
    Si id est un id numérique, utilise intval et non mysql_real_escape_string (qui protège des injections SQL, pas des scripts)
    Par contre utilise pas htmlspecialchars pour l'affichage mais pas dans les requêtes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(isset($_POST['armeesdiv']) AND isset($_POST['position']))//On verifie si les variables sont initialisées
    {
            $armeesdiv = mysql_real_escape_string($_POST['armeesdiv']);
    	$position = intval($_POST['position']);
     
            $resultSelect = mysql_query("SELECT id, armeesdiv FROM matable WHERE id = $position");
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2012
    Messages : 253
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Pour entourer le nom des éléments mysql c'est ` et pas ', tu aussi ne rien mettre s'il n'y a pas d'ambiguité.
    Merci Sabotage,
    le ` provient de la touche 7 du clavier ?

    qu'appelle tu sans ambiguité ???


    Encore une autre question :

    <option value="xxx"> xxx</option>, dans ce type d'option, peut on avoir plusieurs value dans la meme ligne option, ou avoir un truc du genre : <option value="xxx [] "> xxx</option>, merci.

    Sinon le code sql ne coince plus, merci et bonne journée.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    oui ` est sur la touche d'un clavier français.
    ` peut servir pour un identifiant qui contiendrait des caractères spéciaux ; le plus simple c'est de ne pas en avoir.

    Une <option> correspond à un seul choix, pourquoi y aurait-il plusieurs valeurs associées ?
    Si l'idée est qu'une option entraine plusieurs paramètres, il faut le faire à reception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    switch ($_POST['select']) {
        case '1' :
              $couleur = 'bleu';
              $taille = 'L';
        break;
     
       case '2' :
              $couleur = 'vert';
              $taille = 'M';
        break;
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2012
    Messages : 253
    Par défaut
    Merci pour ces precisions,
    quelle serait alors la syntaxe pour une option ayant plusieurs parametre ?

    j'ai terminé pour les questions.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je viens de te montrer comment faire non ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2012
    Messages : 253
    Par défaut
    Desolé, j'avais pas compris, c'est bon maintenant, merci pour ta patience et ton aide.

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Bonsoir,

    "L'erreur" dans ce script, c'est l'utilisations des fonctions mysql_*, qui sont dépréciées et qui seront retirées de PHP dans la version 7. Ces fonctions sont dangereuses pour ton application et n'ont plus leur place dans un code PHP en 2015. Je te conseille à la place d'utiliser PDO ou mysqli, qui proposent, entre autres, l'utilisation de requêtes préparées et de paramètres liées qui te protègent contre une grande partie des risques d'injection SQL.

    Si tu as des questions sur l'utilisation PDO/Mysql, n'hésite pas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 12/12/2005, 13h13
  2. Réponses: 10
    Dernier message: 26/01/2005, 19h48
  3. [CE10 Pro] Erreur Connexion SQL pour etats publiés
    Par L.nico dans le forum Connectivité
    Réponses: 1
    Dernier message: 09/12/2004, 17h16
  4. catch des erreurs dans SQL+
    Par lalystar dans le forum Oracle
    Réponses: 2
    Dernier message: 21/09/2004, 15h17
  5. message d'erreur "Microsoft SQL-DMO"
    Par tachi dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 17/08/2004, 11h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo