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

表ザッツあなたのテーブルには、21列があり

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

テーブル定義は何ですか?テーブル内のカラム数と挿入しようとしている値の数を計算してから、piteを取得する前に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

、あなただけの20個の値を挿入しています。あなたは$VK_Preis$EK_Preis$VK_Preis_1の間にありません。

関連する問題