MySQL数据库||表格问题

时间:2012-10-28 10:44:45

标签: mysql

我正在尝试编写一个脚本,用户可以购买一定数量的点数。我希望将事务插入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中要执行什么,因为我之前从未使用过它。

2 个答案:

答案 0 :(得分:3)

您收到错误的原因是您隐式执行查询,表明INSERT语句中提供的值与表格中的列总数不匹配。

为了避免这种情况,您必须提供列名,例如

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

如果要执行不指定列名的查询,则值必须与列的toal数匹配,例如。你有一个有4列的表,所有这些都是整数,

INSERT INTO tableName VALUES (1,2,3,4)

答案 1 :(得分:1)

首先,您应该确保您的变量包含与SQL语法相关的正确值。 然后,将这些变量直接放入带有双引号的查询中。 PHP将操纵它们的值并替换为查询字符串。 E.g。

$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。

抱歉我写的英文不好。