2017-02-22 411 views
-3

此查询中的错误是什么?MySQL - 列计数与第1行的值计数不匹配

$sql=mysql_query("INSERT INTO xml_daten VALUES('','$EAN','$Warengruppe','$Bezeichnung','$Langtext','$Zusatz_1','$Zusatz_2','$Zusatz_3','$Menge','$Einheit','$VE_Einheit','$VE_Menge','$Artikelbild','$St_Satz','$EK_Preis','$VK_Preis_1','$Soll_Bestand','$Ist_Bestand','$Preisangabe','$SN_Angabe')") or die("Fehler ".mysql_error()); 

那表

CREATE TABLE `xml_daten` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `EAN` varchar(200) COLLATE latin1_german2_ci NOT NULL, 
    `Warengruppe` varchar(200) COLLATE latin1_german2_ci NOT NULL, 
    `Bezeichnung` text COLLATE latin1_german2_ci NOT NULL, 
    `Langtext` text COLLATE latin1_german2_ci NOT NULL, 
    `Zusatz1` varchar(255) COLLATE latin1_german2_ci NOT NULL, 
    `Zusatz2` varchar(255) COLLATE latin1_german2_ci NOT NULL, 
    `Zusatz3` varchar(255) COLLATE latin1_german2_ci NOT NULL, 
    `Menge` varchar(5) COLLATE latin1_german2_ci NOT NULL, 
    `Einheit` varchar(10) COLLATE latin1_german2_ci NOT NULL, 
    `VE_Einheit` varchar(255) COLLATE latin1_german2_ci NOT NULL, 
    `VE_Menge` varchar(255) COLLATE latin1_german2_ci NOT NULL, 
    `Artikelbild` varchar(255) COLLATE latin1_german2_ci NOT NULL, 
    `St_Satz` varchar(10) COLLATE latin1_german2_ci NOT NULL, 
    `EK_Preis` varchar(255) COLLATE latin1_german2_ci NOT NULL, 
    `VK_Preis` varchar(255) COLLATE latin1_german2_ci NOT NULL, 
    `VK_Preis_1` varchar(255) COLLATE latin1_german2_ci NOT NULL, 
    `Soll_Bestand` varchar(20) COLLATE latin1_german2_ci NOT NULL, 
    `Ist_Bestand` varchar(20) COLLATE latin1_german2_ci NOT NULL, 
    `Preisangabe` varchar(255) COLLATE latin1_german2_ci NOT NULL, 
    `SN_Angabe` varchar(255) COLLATE latin1_german2_ci NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci; 
+4

什么是您的表定义?计算表中列的数量以及您要插入的值的数量......然后学习如何在使用MySQLi或PDO中的预准备语句时使用绑定变量,然后再使用 –

+1

**警告**:如果您只是学习PHP,请不要使用['mysql_query'](http://php.net/manual/en/function.mysql-query.php)接口。这是非常可怕和危险的,它在PHP 7中被删除了。[PDO的替代品并不难学](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps -pdo-for-database-access /)以及[PHP The Right Way](http://www.phptherightway.com/)等指南介绍了最佳实践。你的用户数据是**不是** [正确转义](http://bobby-tables.com/php.html),并有[SQL注入漏洞](http://bobby-tables.com/),并且可以被利用。 – tadman

+1

MySQL通常会给出高度特定的错误,通常是问题所在的确切字符,如果只是您倾听它们。 – tadman

回答

0

你忘了列“VK_Preis”

更好地利用这种形式插入新条目。所以你不必手动设置主键。

$sql=mysql_query("INSERT INTO xml_daten 
(
EAN, 
Warengruppe, 
Bezeichnung, 
Langtext, 
Zusatz1, 
Zusatz2, 
Zusatz3, 
Menge, 
Einheit, 
VE_Einheit, 
VE_Menge, 
Artikelbild, 
St_Satz, 
EK_Preis, 
VK_Preis, 
VK_Preis_1, 
Soll_Bestand, 
Ist_Bestand, 
Preisangabe, 
SN_Angabe 
) 
VALUES 
(
'$EAN', 
'$Warengruppe', 
'$Bezeichnung', 
'$Langtext', 
'$Zusatz_1', 
'$Zusat_2', 
'$Zusatz_3', 
'$Menge', 
'$Einheit', 
'$VE_Einheit', 
'$VE_Menge', 
'$Artikelbild', 
'$St_Satz', 
'$EK_Preis', 
'$VK_Preis', 
'$VK_Preis_1', 
'$Soll_Bestand', 
'$Ist_Bestand', 
'$Preisangabe', 
'$SN_Angabe' 
) 
") or die("Fehler ".mysql_error()); 
0

你的表有21列,你只插入20个值。您在$EK_Preis$VK_Preis_1之间缺少$VK_Preis