Maison  >  Article  >  développement back-end  >  Pourquoi est-ce que j'obtiens l'erreur « Incompatibilité du nombre de colonnes à la ligne 1 » dans ma requête MySQL ?

Pourquoi est-ce que j'obtiens l'erreur « Incompatibilité du nombre de colonnes à la ligne 1 » dans ma requête MySQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-27 10:20:31168parcourir

Why am I getting the

Erreur PHP, MySQL : incompatibilité du nombre de colonnes à la ligne 1

Cette erreur : "Le nombre de colonnes ne correspond pas au nombre de valeurs à la ligne 1 ", indique un écart entre le nombre de colonnes dans lesquelles vous essayez d'insérer des données et le nombre réel de valeurs fournies.

Dans l'extrait de code fourni, vous essayez d'insérer des données dans une table avec 9 colonnes (id, Nom, Description, shortDescription, Ingrédients, Méthode, Longueur, dateAdded, Nom d'utilisateur) utilisant 8 valeurs ($name, $description, $shortDescription, $ingredients, $method, $username, $length, $dateAdded).

Cause de l'erreur :

L'erreur se produit car il y a une incompatibilité entre le nombre de colonnes définies dans la requête INSERT et le nombre de valeurs qui lui sont transmises . Dans ce cas, la requête attend 9 valeurs, mais seulement 8 sont fournies, à l'exclusion de la colonne "image".

Solution :

Pour résoudre l'erreur, assurez-vous que le nombre de valeurs correspond au nombre de colonnes dans la requête INSERT. Vous pouvez soit ajouter la valeur manquante pour la colonne "image", soit la supprimer de la liste des colonnes dans lesquelles vous êtes inséré.

Modification du code :

Option 1 : Ajouter la valeur manquante

<code class="php">$query = sprintf("INSERT INTO dbname (id, Name, Description, shortDescription, Ingredients, Method, Image, Length, dateAdded, Username) VALUES ('', '%s', '%s', '%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($method),
    '', // Placeholder for empty 'image' value
    mysql_real_escape_string($length),
    mysql_real_escape_string($dateAdded),
    mysql_real_escape_string($username));</code>

Option 2 : Supprimer la colonne "Image"

<code class="php">$query = sprintf("INSERT INTO dbname (id, Name, Description, shortDescription, Ingredients, Method, Length, dateAdded, Username) VALUES ('', '%s', '%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($method),
    mysql_real_escape_string($length),
    mysql_real_escape_string($dateAdded),
    mysql_real_escape_string($username));</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn