PHP を使用して MySQL データベースにデータを挿入しようとすると、次のエラーが発生する場合があります:
Column count doesn't match value count at row 1
このエラーは、テーブルに挿入しようとしている値の数が、定義されている列の数と一致しない場合に発生します。
エラーについて
特定のケースでは、エラーは提供されたコードに示されているクエリによって発生する可能性が高くなります:
$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($method), mysql_real_escape_string($length), mysql_real_escape_string($dateAdded), mysql_real_escape_string($username));
エラーの解決
エラーを解決するには、コードとデータベース定義を検査して欠損値を特定する必要があります。この場合、INSERT で 9 列を宣言したようです。ステートメント:
ただし、挿入される値は 8 つの値のみを考慮します (画像列がリストに含まれていないため)。
解決策
エラーを修正するには、次のいずれかを追加します。 Method 列の欠落している値を修正するか、挿入する値の数と一致するようにデータベース定義を修正します。最初のオプションを選択した場合は、クエリを次のように更新します:
$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));
以上がPHP MySQL INSERT クエリで「列数が値数と一致しません」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。