"Column count doesn't match value count at row 1"

Eléphant du PHP | 294 Messages

28 nov. 2005, 16:20

Bonjour, j'ai cette erreur permanente, dans un script , si quelqun pouvais m'aider a trouver ou ça coince.
Il s'agit, d'un panier : les caractéristqiues des produits sont dans un tableau "liste", le but etant de les enregistrer ensuite dans une table "listes"

	  for ($i=0;$i<count($liste);$i++)
		{	
		$referenceID=$liste[$i][0];//récup de l'ID de l'article 
		// requete recupere la reference(nom) du produit dans un alias
mysql_select_db($database_sweetie, $sweetie);
$query_rsReference = "SELECT articles.reference AS reference FROM articles WHERE articles.ID=$referenceID ";
$rsReference = mysql_query($query_rsReference, $sweetie) or die(mysql_error());
$row_rsReference = mysql_fetch_assoc($rsReference);
$totalRows_rsReference = mysql_num_rows($rsReference);

		//$reference=$row_rsReference['reference']; 
		$quantite=$liste[$i][7];
		$prixTTC=$liste[$i][8];
		$totalTTC=$liste[$i][9];
		$precisions=$liste[$i][3];
		$couleurID=$liste[$i][2];
		$couleurs_entrep=$liste[$i][5];
		$sexeID=$liste[$i][1];
		$theme=$liste[$i][6];
		$insertListe = "INSERT INTO listes (commandeID, reference, quantite, prixHT, prixTTC, totalTTC, precisions, couleurID, couleurs_entrep, sexeID, theme) VALUES ('$commandeID, $reference, $quantite, $prixHT, $prixTTC, $totalTTC, $precisions, $couleurID, $couleurs_entrep, $sexeID, $theme')";
		$Result2 = mysql_query($insertListe, $sweetie) or die(mysql_error()); 
		}
La table "liste" :
ID smallint(6) Non auto_increment
commandeID tinyint(5) Non 0
reference tinyint(2) Non 0
quantite tinyint(1) Non 0
prixHT decimal(3,2) Oui 0.00
prixTTC decimal(3,2) Oui 0.00
totalTTC decimal(5,2) Oui 0.00
precisions text Oui NULL
couleurID tinyint(1) Oui 0
couleurs_entrep text Oui NULL
sexeID tinyint(1) Oui 0
theme text Oui NULL

a noter que certaines variables du tableau $liste peuvent -etre vides, d'ou dans ma table des champs pouvant etre NUll

merci de votre aide

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

28 nov. 2005, 16:24

   $insertListe = "INSERT INTO listes (commandeID, reference, quantite, prixHT, prixTTC, totalTTC, precisions, couleurID, couleurs_entrep, sexeID, theme) VALUES (".$commandeID.", ".$reference.", ".$quantite.", ".$prixHT.", ". $prixTTC.", ".$totalTTC.", ".$precisions.", ".$couleurID.", ".$couleurs_entrep.", ".$sexeID.", ".$theme.")"; 
Les apostrophes avant et après la liste de variable, à quoi servent elles ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 294 Messages

28 nov. 2005, 16:40

Bon sang !!!
merci
a force de regarder parfois on vois plus rien... :wink:
$insertListe = "INSERT INTO listes (commandeID, reference, quantite, prixHT, prixTTC, totalTTC, precisions, couleurID, couleurs_entrep, sexeID, theme) VALUES ('$commandeID', '$reference', '$quantite', '$prixHT', '$prixTTC', '$totalTTC', '$precisions', '$couleurID', '$couleurs_entrep', '$sexeID', '$theme')";
encore merci

Mammouth du PHP | 19672 Messages

28 nov. 2005, 23:54

Et en faisant une concaténation propre ce serait encore mieux :
<?php
$insertListe = "INSERT INTO listes (commandeID, reference, quantite, prixHT, prixTTC, totalTTC, precisions, couleurID, couleurs_entrep, sexeID, theme) ".
"VALUES ('". $commandeID ."', '". $reference ."', '". $quantite ."', '". $prixHT ."', '". $prixTTC ."', '". $totalTTC ."', '". $precisions ."', '". $couleurID ."', '". $couleurs_entrep ."', '". $sexeID ."', '". $theme ."')";
?>
Et si certaines valeurs sont des entiers, tu peux enlever les apostrophes, mais pas les guillemets ni les points de concaténation, ce qui donnerait à première vue:
<?php
$insertListe = "INSERT INTO listes (commandeID, reference, quantite, prixHT, prixTTC, totalTTC, precisions, couleurID, couleurs_entrep, sexeID, theme) ".
"VALUES (". $commandeID .", '". $reference ."', ". $quantite .", ". $prixHT .", ". $prixTTC .", ". $totalTTC .", '". $precisions ."', ". $couleurID .", '". $couleurs_entrep ."', '". $sexeID ."', '". $theme ."')";
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 294 Messages

29 nov. 2005, 00:19

Merci pour tous ces conseils, je vais les noter et les appliquer.