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