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 中执行什么,因为我以前从未使用过它。

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 回答