2017-02-22 410 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