此查询适用于与PayPal集成的IPN脚本。除了将数据插入表中外,一切都在脚本中工作。这是插入数据的代码,所有对象都有适当的值。
if ($item == "RuneCoins") {
mail("admin@sallesy.com", "Item purchased!", "$acc has just purchased $item for $paid.");
mysql_query("INSERT INTO `purchases` (`id`, `email`, `price`, `product`, `fname`, `lname`, `time`, `transaction_id`, `acc`) VALUES (NULL, '$email', '$paid', '$item', '$fname', '$lname', CURRENT_TIMESTAMP, '$trans', '$acc');");
} else {
mail("admin@sallesy.com", "Invalid item!", "$acc purchased $item, and it was invalid.");
}
我收到用户购买商品的电子邮件,但数据未插入表格中。为什么会这样?
这是表
的SQL结构CREATE TABLE IF NOT EXISTS `purchases` (
`id` int(11) NOT NULL,
`email` longtext COLLATE utf8_unicode_ci NOT NULL,
`price` int(11) NOT NULL,
`product` longtext COLLATE utf8_unicode_ci NOT NULL,
`fname` longtext COLLATE utf8_unicode_ci NOT NULL,
`lname` longtext COLLATE utf8_unicode_ci NOT NULL,
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`transaction_id` bigint(11) NOT NULL,
`acc` longtext COLLATE utf8_unicode_ci NOT NULL,
`delivered` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
我做错了什么?
答案 0 :(得分:1)
我看到了问题。您无法使用NULL
作为id
的值,因为create table
声明中明确禁止使用 mysql_query("INSERT INTO `purchases` (`id`, `email`, `price`, `product`, `fname`, `lname`, `time`, `transaction_id`, `acc`) VALUES (0, '$email', '$paid', '$item', '$fname', '$lname', CURRENT_TIMESTAMP, '$trans', '$acc');");
。你需要做的是两次。
首先,将插入更改为:
NULL
我在那里做的唯一更改是将0
更改为CREATE TABLE IF NOT EXISTS `purchases` (
`id` int(11) NOT NULL auto_increment,
`email` longtext COLLATE utf8_unicode_ci NOT NULL,
`price` int(11) NOT NULL,
`product` longtext COLLATE utf8_unicode_ci NOT NULL,
`fname` longtext COLLATE utf8_unicode_ci NOT NULL,
`lname` longtext COLLATE utf8_unicode_ci NOT NULL,
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`transaction_id` bigint(11) NOT NULL,
`acc` longtext COLLATE utf8_unicode_ci NOT NULL,
`delivered` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
,因为0有效,并且可以很好地处理下一次更改。更改两个,修改您的创建表:
id
您需要确保0
字段自动递增。如果它没有自动递增,那么你必须在代码中维护一个计数器,这很烦人。将其更改为自动递增将允许您将<the next available id>
作为ID,这将被解释为{{1}}。
希望这有帮助。