0

IPN スクリプトに問題があります。支払いの確認などには問題ありませんが、データをデータベースに入力しようとしています。前のユーザーの電子メールとパスワードの入力は正常に機能しますが、2番目の入力は機能しません..

$item_name = $_POST['item_name'];
$item_number = $_POST['item_number'];
$payment_status = $_POST['payment_status'];
$payment_amount = $_POST['mc_gross'];
$payment_currency = $_POST['mc_currency'];
$txn_id = $_POST['txn_id'];
$receiver_email = $_POST['receiver_email'];
$payer_email = $_POST['payer_email'];

$email = $_POST['item_name'];
$password = mt_rand(1000, 9999);
$Random = print_r($_POST);


mysql_query("INSERT INTO users (email, password) VALUES('". mysql_escape_string($email)     ."', '".md5($password)."') ") or die(mysql_error()); 

mysql_query("INSERT INTO LNCH_Sales SET
                                                            item_name = '%s',
                                                            item_number = '%s',
                                                            payment_status = '%s',
                                                            payment_amount = '%s',
                                                            payment_currency = '%s',
                                                                txn_id = '%s',
                                                            receiver_email = '%s',
                                                            payer_email = '%s'",
                                                            mysql_real_escape_string($item['name']),
                                                            mysql_real_escape_string($item['number']),
                                                            mysql_real_escape_string($payment['status']),
                                                            mysql_real_escape_string($payment['amount']),
                                                            mysql_real_escape_string($payment['currency']),       
                                                            mysql_real_escape_string($txn['id']),
                                                            mysql_real_escape_string($receiver['email']),
                                                            mysql_real_escape_string($payer['email'])

                                                                      );

ここで何が間違っているのでしょうか?

4

2 に答える 2

4

あなたの構文が間違っています-代わりに

INSERT INTO LNCH_SALES SET

(これはINSERTとUPDATEの混合のように見えます)、あなたは必要です

INSERT INTO LNCH_SALES(<column_list>) VALUES (...
于 2012-05-24T12:18:10.317 に答える
0

@FrankSchmittが言ったように、おそらく列リストがありません。

列リストをスキップできる唯一の方法は、挿入列の数 = テーブル列の数に等しい場合です。IE:

jcho360> create table test (id int,name varchar(20));
Query OK, 0 rows affected (0.05 sec)

jcho360> insert into test values (1,'Jcho360');
Query OK, 1 row affected (0.00 sec)

jcho360> insert into test values (1);
ERROR 1136 (21S01): Column count doesn't match value count at row 1

jcho360> insert into test(id) values (1);
Query OK, 1 row affected (0.01 sec)

「挿入」ですべての列を埋める場合にのみわかるように、列リストをスキップできます。

于 2012-05-24T12:53:55.687 に答える