0

ユーザーがポイントをドルで購入できるスクリプトを作成しようとしています。トランザクションを MySQL に挿入したい。「列数が行 1 の値数と一致しません」というエラーが引き続き発生します。そして、私は自分が何を間違っているのか分かりません。

私はこれを書きました:

mysql_query("INSERT INTO paypal_donations VALUES (NULL, ".$account_id.", ".$char_id.", ".$price.", ".$dp.", NOW(), NOW(), 'Started', 0, 0, '', '');") or die(mysql_error());

しかし、MySQL を使ったことがないので、MySQL で何を実行すればよいかわかりません。

4

2 に答える 2

3

エラーが発生する理由は、INSERTステートメントで指定された値がテーブルの列の総数と一致しないというクエリを暗黙的に実行しているためです。

これを回避するには、列名を指定する必要があります。例:

INSERT INTO tableName (col1, col2, col3)
VALUES (1,2,3)

列名を指定せずにクエリを実行する場合、値は列の総数と一致する必要があります。4 つの列を持つテーブルがあり、それらはすべて整数です。

INSERT INTO tableName VALUES (1,2,3,4)
于 2012-10-28T10:46:59.520 に答える
1

まず、変数に SQL 構文に関連する正しい値が含まれていることを確認する必要があります。次に、これらの変数を二重引用符で直接クエリに入れます。PHP はそれらの値を操作し、クエリ文字列に置き換えます。例えば

$account_id = "'Some_ID'"; // there is a single quote
mysql_query("INSERT INTO paypal_donations VALUES (NULL, $account_id, $char_id, $price, $dp, NOW(), NOW(), 'Started', 0, 0, '', '');") or die(mysql_error());

INSERT SQL コマンドの場合は、次の構文を使用してください。

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...) /*Without "..." :) */

null_field または auto_increased_field がある場合は、クエリで言及しないか、値を NULL にすることで無視できます。

私が書いた下手な英語でごめんなさい。

于 2012-10-28T10:54:40.007 に答える