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 :

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version .


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 30
    Points : 17
    Points
    17
    Par défaut You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version .
    Bonjour,
    Nous avons un soucis avec le site, en gros c'est un site de jeu, les joueurs se connecte et après peuvent acheter de la monnaie pour acheter des objet.
    Il font leur code de micro paiement et quand il le rentre pour le validé, nous avons une erreur : 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 '' at line 1

    Voici le code de validation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
      session_start();
      $user_id = $_SESSION['id_syg'];
     
      require_once('config.php');
      connexion_mysql();
      banni();
      mysql_select_db('player');
      $search=mysql_query("SELECT account.account.cash FROM account.account WHERE account.account.id=$user_id") or die(mysql_error());
      $fi=mysql_fetch_array($search);
      $argent=$fi["cash"]+1500;
      mysql_query("UPDATE account.account set account.account.cash='$argent' WHERE account.account.id='$user_id'") or die(mysql_error());
      header('location: http://lunaris-online.org/index.php?p=117');
    ?>
    le code de départ credit.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    28
    <?php if(empty($securite)){ exit; } ?>
    <?php if(!isset($sess) || $sess=='') exit('<div align="center">Vous n\'&ecirc;tes pas connect&eacute; &agrave; votre compte.<br />Utilisez le syst&egrave;me de connexion au-dessus avant de vouloir acheter quoi que ce soit.</div>'); ?>
    <div class="boxui box-title">
    	<h2>Achat de points</h2>
    	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    	<span class="date">Paiement</span>
    </div>
    <div class="boxui box-con">
    	<p><center>
    		<div>
    		  <?php 
            //Get user id from session variable
            $uid = $_SESSION['id_syg']; 
          ?>
    		  <!-- Begin Allopass Checkout-Button Code -->
    <iframe width="550" height="480" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="https://payment.allopass.com/buy/buy.apu?ids=257578&idd=1023906&ap_ca_idc[0]=20840490&ap_ca_mnt[0]=50"></iframe>
            <a href="" style="border:0">
             <img src="https://payment.allopass.com/static/buy/button/fr/162x56.png" style="border:0" alt="Buy now!" />
            </a>
           </noscript>
          <!-- End Allopass Checkout-Button Code -->
    		</div>
    		Vous obtiendrez 1500 Luna a l'achat d'un code. Bon jeu <3
    <center> For the Security for ItemShop, use Mozilla Firefox <a href="http://download.mozilla.org/?product=firefox-10.0.2&os=win&lang=fr"><img src="http://upload.wikimedia.org/wikipedia/en/b/bf/Firefox.png" width="50" height="50" </a>  </center>
     
    	</center></p>
    </div>
    <div class="boxui box-end"></div>
    Nous avons au début mysql 5.1, nous l'avons passé en 5.5 puis repassé en 5.1 car sa buggait en 5.5 sa peut venir de la ?
    Merci de votre aide :-) <3

  2. #2
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    salut,

    si tu as fait ça en exportant puis réimportant... non
    si tu l'as fait à la bourrin en copiant juste les fichiers qui constituent la bd, là tu as des changements qui ont été fait dans informations_schema entre les 2 versions... donc ça se peut...

    rigolo de voir le connecteur (extension) mysql et pas pdo dans un projet "semi pro" ou pro...

    je rappelle que l'extension mysql risque de ne plus être prise e charge, il faut migrer sur mysqli ou idéalement sur pdo pour se connecter à mysql depuis php...

    le nom de la bd et de table identique, c'est pas très malin car tu risques de vite faire des erreurs d'écriture et ça se pourrait que ce soit ça non?

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_select_db('player');
    tu es dans la bd player

    regardons ta 1ère requête avec indentation pour mieux la lire:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT account.account.cash
    FROM account.account
    WHERE account.account.id=$user_id
    littéralement:
    "affiche la colonne cash de la table account de la bd account
    provenant de la table account de la bd account
    dont les lignes sont choisies si la colonne id de la table account de la bd account a pour valeur $user_id"

    en gros: ça peut pas marcher... le seul moment où tu donnes nom d'un bd c'est dans la sélection de celle-ci avant une ou plusieurs requêtes sur elle ou si tu as besoin au niveau du from ou d'un join car c'est uniquement là que ça peut se faire...

    ta requête:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT cash
    FROM account
    WHERE id=$user_id

    même combat pour la 2ème:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE account
    set cash=$argent
    WHERE id=$user_id

    au passage j'ai viré les quotes autour de $user_id, c'est sensé être un identifiant numérique!!! (idem pour cash)

    toujours au passage ça peut se faire en UNE seule requête:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE account
    set cash=cash+1500
    WHERE id=$user_id

    bref...ça fait peur...

    ps:l'affichage des erreurs aux yeux de l'utilisateur c'est moyen aussi... vaut mieux te faire un append sur un fichier log de l'erreur mysql...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Mmmh intéressant mais j'ai rien compris x)

    Le problème survient chez certaines personnes mais pas d'autre.
    Si quelqu'un veut bien m'aider, voici mon skype : mcwoodss
    Merci

  4. #4
    Membre éprouvé Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Points : 1 275
    Points
    1 275
    Par défaut
    Pour reprendre :

    Citation Envoyé par Lucas2012 Voir le message
    Nous avons au début mysql 5.1, nous l'avons passé en 5.5 puis repassé en 5.1 car sa buggait en 5.5 sa peut venir de la ?
    Comment vous avez effectué la migration puis le rollback?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $search=mysql_query("SELECT account.account.cash FROM account.account WHERE account.account.id=$user_id") or die(mysql_error());
    C'est pas beau du tout. Corrige le nom de la base ou de la table pour éviter d'avoir le même.
    Pourquoi sélectionner la base 'player' au début du script alors que tu requêtes que la base 'account'?

    Enfin ça n'a pas de rapport avec ton problème mais pense à protéger un peu tout ça parceque là il suffit d'appeler ta page après s'être authentifié et on gagne autant de cash qu'on veut....
    Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre.

    Linus Torvalds

Discussions similaires

  1. Réponses: 6
    Dernier message: 01/11/2014, 12h55
  2. Réponses: 2
    Dernier message: 04/05/2014, 00h26
  3. [MySQL] erreur dans une boucle ?You have an error in your SQL syntax; check the manual that c
    Par keokaz dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 17/10/2008, 23h08
  4. Erreur incomprehensible:You have an error in your SQL syntax.
    Par Siguillaume dans le forum Requêtes
    Réponses: 2
    Dernier message: 14/06/2008, 10h18
  5. You have an error in your SQL syntax; check the manual ..
    Par Spaccio dans le forum Requêtes
    Réponses: 5
    Dernier message: 09/07/2006, 17h39

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