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

Par barpoi78, il y a 5 ans


Base de données MySQL

Bonjour,

J'ai un problème pour l'insertion alors que le nombre de champs dans ma requête correspond bien au nombre de champs dans ma table: id, nom, email, telephone, adresse, ville cp, ddeConcerne, fonctionnalites et message.

Ma requête:

$sql = 'INSERT INTO devis_clients VALUES (?,?,?,?,?,?,?,?,?,?)'; if ($stmt = $mysqli->prepare($sql)) { $stmt->bind_param('sssssssss', $nom, $email, $telephone, $adresse, $ville, $cp, $ddeConcerne, $fonctionnalites, $message); $stmt->execute(); } else { $error = $mysqli->errno.' '.$mysqli->error; echo $error; }

J'obtiens l'erreur: 1136 Column count doesn't match value count at row 1

Je vous remecie de votre aide

8 réponses

Carouge10, il y a 5 ans

Bonjour,
Une relecture de la doc de "bind_param" s'impose,
il faut autant de "s" que de "?"

Carouge10, il y a 5 ans

code actualisé ?

barpoi78, il y a 5 ans

merci j'ai donc lu la documentation et ajouté autant de paramètres "s" qu'il e faut et malgré tout j'ai toujours la même erreur.

Carouge10, il y a 5 ans

et donc le nouveau code est ?

barpoi78, il y a 5 ans

$sql = 'INSERT INTO devis_clients VALUES (?,?,?,?,?,?,?,?,?,?)';
if ($stmt = $mysqli->prepare($sql)) {
$stmt->bind_param('sssssssss', $nom, $email, $telephone, $adresse, $ville, $cp, $ddeConcerne, $fonctionnalites, $message);
$stmt->execute();
} else {
$error = $mysqli->errno.' '.$mysqli->error;
echo $error;
}

Carouge10, il y a 5 ans

compte le nombre de "?", compte le nombre de "s" et compte le nombre de paramètre dans bin_param....
je vois de vois que tu as éditer ton 1er message, ce n'est pas sympa car du coup, on ne connais pas le code d'origine et on perds le fil de la conversation

barpoi78, il y a 5 ans

Je viens de l'éditer car je ne savais pas comment faire et j'ai juste ajouté les"s" manquants car il n'y en n'avait qu'un mais là je suis sur mon pc et c'est plus pratique donc j'ai aussi enlevé un "?" donc 9 "s" et 9 "?"

$sql = 'INSERT INTO devis_clients VALUES (?,?,?,?,?,?,?,?,?)';
if ($stmt = $mysqli->prepare($sql)) {
$stmt->bind_param('sssssssss', $nom, $email, $telephone, $adresse, $ville, $cp, $ddeConcerne, $fonctionnalites, $message);
$stmt->execute();
} else {
$error = $mysqli->errno.' '.$mysqli->error;
echo $error;
}

et toujours la même erreur

Carouge10, il y a 5 ans

j'en compte 10 de "?" dans le 1er code
$stmt->execute(); retourne true en cas de succès et false en cas d'achec, qu'elle retour obtiens-tu ?
Si false alors là il faur lire la valeur de https://www.php.net/manual/fr/mysqli-stmt.error.php