0

従業員データベースの構築に取り組んでいますが、興味深い問題が発生したようです。新しいユーザー/従業員を追加するクエリを実行すると、次のエラーが表示されます。

列数が行 1 の値数と一致しません

私が調査したところ、これは挿入ステートメントの例の最初の部分で宣言されているものよりも多い/少ない値を挿入するとエラーになるようです:

INSERT INTO テーブル (col1、col2) 値 (val1、val2、val3)

ただし、クエリを調べたところ、列と値が完全に一致しています (カウントに関して)。引用符やコンマの欠落など、クエリ内のものを探しました.

これが私のコードです(クエリ):

$db->query("INSERT INTO userdata (
                Username,
                Email,
                Phone,
                Password,
                FirstName,
                LastName,
                Address,
                City,
                State,
                Zip,
                JobTitle,
                UserGroup,
                JobStatus,
                Points,
                Status,
                BirthDate,
                HireDate,
                HourlyRate,
                DateAdded,
                SSN
            ) VALUES (
                '$Username',
                '$Email',
                '$Phone',
                '$Password',
                '$FirstName',
                '$LastName',
                '$Address',
                '$City',
                '$State',
                '$Zip',
                '$JobTitle',
                '$Group',
                '$JobStatus',
                0,
                '$Status',
                '$BirthDate',
                '$HireDate',
                '$HourlyRate'
                '$TodaysDate',
                '$SSN'
            )") or die(mysqli_error($db));

注意すべき点:

  • これは、テーブルのすべての列にここにデータが挿入されているわけではありません (これを行うことは可能だと思います。ID の自動インクリメントなどはそれ自体で入力され、その他は空白のままになります)。

  • 私が行った変数のダンプから、これらの変数はすべて有効です。

私はこれについて本当に混乱しています。

4

1 に答える 1

0

次の部分をもう一度確認してください。

    INSERT INTO userdata(...,
                    JobStatus,
                    UserGroup,
                    Points,
                    UserGroup,
                    Status,
                    .....
            ,)VALUES(...,
                   $JobStatus',
                   0,
                  '$Group',
                   '$Status',
                   ......
                   )

values(, ?, ?, ?) では、jobstatus の後に UserGroup と Points が続きます。そして、UserGroup が 2 回表示されました。

于 2013-09-29T17:08:51.350 に答える