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 dans la base de données [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Par défaut Erreur dans la base de données
    Bonjour,

    J'ai un script qui est fourni sans l'écriture de la base de données, alors j'ai créé la base de données grosso-modo en fonction du script, mais j'ai des erreurs dans mysql durant l'exécution du script. Je débute en php et je ne trouve pas cette erreur.
    Voici le script :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    <!-- Listing 17-5: editing data from database (comment_edit.php) -->
    <?php
     
    // Open connection to the database
    mysql_connect("**", "***", "***") or die("Failure to communicate with database");
    mysql_select_db("eonintermail");
     
    if ($_POST['submit'] == 'Submit') {
      // Format the data
      $comment_id = $_POST['comment_id'];
      $comment_header = $_POST['comment_header'];
      $as_comment_header = addslashes($comment_header);
      $comment = $_POST['comment']; 
      $as_comment = addslashes($_POST['comment']);
     
      // Update values
    $query = "UPDATE comments
                SET comment_header = 'uy',
                comment = 'uy'
                WHERE ID = 0";
      $result = mysql_query($query);
      if (mysql_affected_rows() == 1) {
        $success_msg = '<P>Your comment has been updated.</P>';
      } else {
        error_log(mysql_error());
        $success_msg = '<P>Something went wrong.</P>';
    	echo mysql_error(); 
      }
    } else {
      // Get the comment header and comment
      $comment_id = $_GET['comment_id'];
      $query = "SELECT comment_header, comment
                FROM comments
                WHERE ID = $comment_id";
      $result = mysql_query($query);
      $comment_arr = mysql_fetch_array($result);
      $comment_header = stripslashes($comment_arr[0]);
      $comment = stripslashes($comment_arr[1]);
      	echo mysql_error(); 
    }
     
     
    $thispage = $_SERVER['PHP_SELF']; //Have to do this for heredoc
     
    $form_page = <<< EOFORMPAGE
    <STYLE TYPE="text/css">
    <!--
    BODY, P      {color: black; font-family: verdana; font-size: 10 pt}
    H1        {color: black; font-family: arial; font-size: 12 pt}
    -->
    </STYLE>
    </HEAD>
     
    <BODY>
    <TABLE BORDER=0 CELLPADDING=10 WIDTH=100%>
    <TR>
    <TD BGCOLOR="#F0F8FF" ALIGN=CENTER VALIGN=TOP WIDTH=17%>
    </TD>
    <TD BGCOLOR="#FFFFFF" ALIGN=LEFT VALIGN=TOP WIDTH=83%>
    <H1>Comment edit</H1>
     
    $success_msg
    <FORM METHOD="post" ACTION="$thispage">
    <INPUT TYPE="text" SIZE="40" NAME="comment_header" VALUE="$comment_header"><BR><BR>
    <TEXTAREA NAME="comment" ROWS=10 COLS=50>$comment</TEXTAREA><BR><BR>
    <INPUT TYPE="hidden" NAME="comment_id" VALUE="$comment_id">
    <INPUT TYPE="submit" NAME="submit" VALUE="Submit">
    </FORM>
     
    </TD></TR></TABLE>
    </BODY>
    </HTML>
    EOFORMPAGE;
    echo $form_page;
    ?>

    Et voici un export de la base de données :


    Code SQL : 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
    --
    -- Structure de la table `comments`
    --
     
    CREATE TABLE IF NOT EXISTS `comments` (
      `ID` varchar(50) NOT NULL default '',
      `comment_header` varchar(200) NOT NULL default '',
      `comment` varchar(200) NOT NULL default ''
    ) TYPE=MyISAM;
     
    --
    -- Contenu de la table `comments`
    --
     
    INSERT INTO `comments` (`ID`, `comment_header`, `comment`) VALUES
    ('0', 'iddii', 'iii');

    Pouvez-vous m'aider à comprendre d'où vient le problème ?

    J'ai mis des echo mysql_error(); mais je ne comprends pas plus.

  2. #2
    Membre chevronné Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Par défaut
    Bonjour,

    mysql_error(); te retourne quoi ?

    Gillou.

  3. #3
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonjour,

    déjà il apparait que ID n'est pas un VARCHAR mais un entier, Cf la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $query = "UPDATE comments
                SET comment_header = 'uy',
                comment = 'uy'
                WHERE ID = 0";
    D'autres parts cette requête n'est pas complète je pense :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $query = "UPDATE comments
                SET comment_header = 'uy',
                comment = 'uy'
                WHERE ID =".$comment_id;
    De ce fait, la requete INSERT devient incorrecte, il faut enlever les guillemets encapsulant les valeurs entières :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO `comments` (`ID`, `comment_header`, `comment`) VALUES
    (0, 'iddii', 'iii');

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Par défaut
    Je suis bête, j'ai posté un code dans lequel j'avais remplacé les variables de la requête sql par des valeurs, pour faire un test.

    Je reposte le code d'origine avec les variables.

    J'ai remplacé dans la bdd, le varchar par un integer, mais j'ai toujours l'erreur.

    Voici l'erreur au premier chargement de la page :


    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /homez.63/eoninter/www/php/comment_edit.php on line 36
    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 3

    Si ensuite je fais un essai d'envoi du formulaire, j'ai :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 4

    Voici donc le code d'origine
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    <!-- Listing 17-5: editing data from database (comment_edit.php) -->
    <?php
     
    // Open connection to the database
    mysql_connect("***", "***", "***") or die("Failure to communicate with database");
    mysql_select_db("eonintermail");
     
    if ($_POST['submit'] == 'Submit') {
      // Format the data
      $comment_id = $_POST['comment_id'];
      $comment_header = $_POST['comment_header'];
      $as_comment_header = addslashes($comment_header);
      $comment = $_POST['comment']; 
      $as_comment = addslashes($_POST['comment']);
     
      // Update values
    $query = "UPDATE comments
                SET comment_header = '$as_comment_header',
                comment = '$as_comment'
                WHERE ID = $comment_id";
      $result = mysql_query($query);
      if (mysql_affected_rows() == 1) {
        $success_msg = '<P>Your comment has been updated.</P>';
      } else {
        error_log(mysql_error());
        $success_msg = '<P>Something went wrong.</P>';
    	echo mysql_error(); 
      }
    } else {
      // Get the comment header and comment
      $comment_id = $_GET['comment_id'];
      $query = "SELECT comment_header, comment
                FROM comments
                WHERE ID = $comment_id";
      $result = mysql_query($query);
      $comment_arr = mysql_fetch_array($result);
      $comment_header = stripslashes($comment_arr[0]);
      $comment = stripslashes($comment_arr[1]);
      	echo mysql_error(); 
    }
     
     
    $thispage = $_SERVER['PHP_SELF']; //Have to do this for heredoc
     
    $form_page = <<< EOFORMPAGE
    <STYLE TYPE="text/css">
    <!--
    BODY, P      {color: black; font-family: verdana; font-size: 10 pt}
    H1        {color: black; font-family: arial; font-size: 12 pt}
    -->
    </STYLE>
    </HEAD>
     
    <BODY>
    <TABLE BORDER=0 CELLPADDING=10 WIDTH=100%>
    <TR>
    <TD BGCOLOR="#F0F8FF" ALIGN=CENTER VALIGN=TOP WIDTH=17%>
    </TD>
    <TD BGCOLOR="#FFFFFF" ALIGN=LEFT VALIGN=TOP WIDTH=83%>
    <H1>Comment edit</H1>
     
    $success_msg
    <FORM METHOD="post" ACTION="$thispage">
    <INPUT TYPE="text" SIZE="40" NAME="comment_header" VALUE="$comment_header"><BR><BR>
    <TEXTAREA NAME="comment" ROWS=10 COLS=50>$comment</TEXTAREA><BR><BR>
    <INPUT TYPE="hidden" NAME="comment_id" VALUE="$comment_id">
    <INPUT TYPE="submit" NAME="submit" VALUE="Submit">
    </FORM>
     
    </TD></TR></TABLE>
    </BODY>
    </HTML>
    EOFORMPAGE;
    echo $form_page;
    ?>

  5. #5
    Membre chevronné Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Par défaut
    Bonjour,

    Les requètes semblent corrects.
    Laquelle pose porblème ?

    Peux-tu modifier la ligne mysql_query de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql_query($query) or die("ERR : " . mysql_error() . "<br />SQL : " . $query);
    et nous donner le résultat

    Gillou.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Par défaut
    Voici le résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ERR : 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 3
    SQL : SELECT comment_header, comment FROM comments WHERE ID =

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

Discussions similaires

  1. erreur récuperation d'un valeur int dans une base de donné mysql
    Par amintoraa dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 28/04/2014, 09h45
  2. Erreur dans la base de données
    Par MisterMok dans le forum SQLite
    Réponses: 2
    Dernier message: 18/11/2013, 08h46
  3. Erreur d'insertion dans la base de données
    Par bza88 dans le forum Android
    Réponses: 1
    Dernier message: 07/06/2013, 13h24
  4. Réponses: 0
    Dernier message: 09/07/2009, 15h10
  5. Réponses: 10
    Dernier message: 20/01/2008, 20h57

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