ホームページ >バックエンド開発 >PHPチュートリアル >PHP および MySQL コードで「列数が行 1 の値数と一致しません」というエラーが発生するのはなぜですか?
PHP および MySQL の「列数が行 1 の値数と一致しません」エラーを修正する
データをPHP を使用している MySQL データベースでは、次のエラーが発生する場合があります:
Column count doesn't match value count at row 1
このエラーは、INSERT クエリで指定された値の数がターゲット テーブルで定義されている列の数と一致しない場合に発生します。
原因を理解する
コード例では、INSERT クエリで 9 つの列を指定しています。
INSERT INTO dbname (id, Name, Description, shortDescription, Ingredients, Method, Length, dateAdded, Username)
ただし、指定しているのは 8 つの値だけです:
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));
その結果、MySQL は指定された値の数を指定されたカラムと一致させることができず、エラーが発生します。
解決策: 値の数がカラムと一致することを確認してください。 Count
この問題を解決するには、クエリ内の値の数がターゲット テーブル内の列の数と一致することを確認する必要があります。この場合、メソッド値の指定が不足しています。
欠落している値を含めるようにコードを変更します:
$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));
正しい数の値を指定すると、正常に実行できるようになります。カラム数の不一致エラーが発生することなく、MySQL データベースにデータを挿入します。
以上がPHP および MySQL コードで「列数が行 1 の値数と一致しません」というエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。