46 votes

PHP, erreur MySQL : Le nombre de colonnes ne correspond pas au nombre de valeurs à la ligne 1

Je reçois cette erreur :

Column count doesn't match value count at row 1

A partir du code suivant :

$name = $_GET['name'];
$description = $_GET['description'];
$shortDescription = $_GET['shortDescription'];
$ingredients = $_GET['ingredients'];
$method = $_GET['method'];
//$image = $_GET['image'];
$username = $_GET['username'];
$length = $_GET['length'];
$dateAdded = uk_date();
$conn = mysql_connect('localhost', 'dbname', 'pass');
mysql_select_db('dbname');
$query = sprintf("INSERT INTO dbname (id, Name, Description, shortDescription, Ingredients, Method, Length, dateAdded, Username) VALUES ('', '%s', '%s', '%s', '%s', '%s', '%s', '%s')",
    mysql_real_escape_string($name),
    mysql_real_escape_string($description),
    mysql_real_escape_string($shortDescription),
    mysql_real_escape_string($ingredients),
    //mysql_real_escape_string($image),
    mysql_real_escape_string($length),
    mysql_real_escape_string($dateAdded),
    mysql_real_escape_string($username));

    $result = mysql_query($query) or die(mysql_error());

Que signifie l'erreur ?

0 votes

Vous avez commenté // mysql_real_escape_string($image), votre requête attend 9 variables que vous lui transmettez 8

0 votes

Je vais télécharger l'image d'une autre manière. La clé de l'image est dans la table, mais aucune valeur n'est insérée pour elle. Cela pourrait-il être la cause de ce problème ?

84voto

Ignacio Vazquez-Abrams Points 312628

Vous avez 9 champs listés, mais seulement 8 valeurs. Essayez d'ajouter la méthode.

14 votes

Vous n'avez donc pas résolu le problème. Parce que ce es le problème.

13voto

Tharsan Points 484

Le nombre de paramètres de colonne dans votre requête d'insertion est de 9, mais vous n'avez fourni que 8 valeurs.

INSERT INTO dbname (id, Name, Description, shortDescription, Ingredients, Method, Length, dateAdded, Username) VALUES ('', '%s', '%s', '%s', '%s', '%s', '%s', '%s')

La requête doit omettre le paramètre "id", car il est généré automatiquement (ou devrait l'être de toute façon) :

INSERT INTO dbname (Name, Description, shortDescription, Ingredients, Method, Length, dateAdded, Username) VALUES ('', '%s', '%s', '%s', '%s', '%s', '%s', '%s')

0 votes

Sauf que tous les champs sont maintenant décalés d'une unité.

6voto

MCForty Points 31

Votre requête comporte 8 ou peut-être même 9 variables, à savoir le nom, la description, etc. Mais les valeurs, ces choses ---> '', '%s', '%s', '%s', '%s', '%s', '%s', '%s')" Le nombre de variables doit être le même que celui des valeurs.

J'ai eu le même problème mais j'ai trouvé la solution. J'espère que cela fonctionnera aussi pour vous.

5 votes

Veuillez noter que cette question a déjà reçu une réponse. Il n'est pas nécessaire de ranimer un message vieux d'un an et demi, à moins que vous ne puissiez y apporter quelque chose de nouveau. Merci tout de même pour votre effort.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X