2017-02-22 13 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()); 

Thats Таблица

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, прежде чем вы получите p0wned –

+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 значений. Вам не хватает $VK_Preis между $EK_Preis и $VK_Preis_1.