Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Fehler in meinem PHP SQL Skript, was könnte die Ursache sein?

Mitglied: AskFabrice

AskFabrice (Level 1) - Jetzt verbinden

16.09.2011, aktualisiert 18.10.2012, 3572 Aufrufe, 5 Kommentare

Ich möchte Daten aus einer XML Datei über PHP und SQL in eine MySQL Datenbank schreiben, Doch ich bekomme immer wieder einen Fehler.

Hallo Zusammen

Ich Habe eine Frage:

Was könnte der Fehler in diesem PHP/SQL Skript sein? Ich lese Daten aus einer XML Datei aus und möchte sie in eine MySQL Datenbank schreiben. Doch ich bekomme immer wieder folgenden Fehler:

01.
 Column count doesn't match value count at row 1
Hier das Skript:

01.
	include_once "_connect.php"; 
02.
	$connect=new connection(); 
03.
	$connect->connect("set names 'utf8'"); /*<<<<<<<<<<<<< WICHTIG*/ 
04.
    $filename = '..\M+A_XML_Files\messen_test.2.xml'; 
05.
	 
06.
    if(file_exists($filename)) { 
07.
        $xml = simplexml_load_file($filename); 
08.
		$c = 1; 
09.
        if($xml) { 
10.
 
11.
            foreach($xml->messedatum as $datum) { 
12.
					$statistik = $datum->statistik; 
13.
					$connect->connect("INSERT INTO messedaten(muamesseid,messeid,kurzname,messetitel,messeort,bundesland,messeland,isoland,gelaende,gelaendeid,startdatum,enddatum,sortkey,anmeldeschluss,aufbau,abbau,debeteiligung,messetyp,gruendung,turnus,zulassung,geschlossen,sektoren,nettojahr,nettomonat,nettoinland,nettoausland,nettototal,nettosonder,nettoprueforg,nettotext,ausstellerjahr,ausstellermonat,ausstellerinland,ausstellerausland,ausstellertotal,ausstellerindirektinland,ausstellerindirektausland,ausstellerindirekttotal,ausstellerprueforg,ausstellertext,besucherjahr,besuchermonat,besucherinland,besucherausland,besuchertotal,fachbesucherinland,fachbesucherausland,fachbesuchertotal,besucherprueforg,besuchertext,ausstellerstruktur,besucherstruktur,messeverband,branchen,messeemail,messeurl,messeveranstalter)values(".mysql_real_escape_string($datum->muamesseid).",".mysql_real_escape_string($datum->messeid).",'".mysql_real_escape_string($datum->kurzname)."','".mysql_real_escape_string($datum->messetitel)."','".mysql_real_escape_string($datum->messeort)."','".mysql_real_escape_string($datum->bundesland)."','".mysql_real_escape_string($datum->messeland)."','".mysql_real_escape_string($datum->isoland)."','".mysql_real_escape_string($datum->gelaende)."','".mysql_real_escape_string($datum->gelaendeid)."','".mysql_real_escape_string($datum->startdatum)."','".mysql_real_escape_string($datum->endedatum)."','".mysql_real_escape_string($datum->sortkey)."','".mysql_real_escape_string($datum->anmeldeschluss)."','".mysql_real_escape_string($datum->aufbau)."','".mysql_real_escape_string($datum->abbau)."','".mysql_real_escape_string($datum->debeteiligung)."','".mysql_real_escape_string($datum->messetyp)."','".mysql_real_escape_string($datum->gruendung)."','".mysql_real_escape_string($datum->turnus)."','".mysql_real_escape_string($datum->zulassung)."','".mysql_real_escape_string($datum->geschlossen)."','".mysql_real_escape_string($datum->sektoren)."','".mysql_real_escape_string($statistik->nettojahr)."','".mysql_real_escape_string($statistik->nettomonat)."','".mysql_real_escape_string($statistik->nettoinland)."','".mysql_real_escape_string($statistik->nettoausland)."','".mysql_real_escape_string($statistik->nettototal)."','".mysql_real_escape_string($statistik->nettosonder)."','".mysql_real_escape_string($statistik->nettoprueforg)."','".mysql_real_escape_string($statistik->nettotext)."','".mysql_real_escape_string($statistik->ausstellerjahr)."','".mysql_real_escape_string($statistik->ausstellermonat)."','".mysql_real_escape_string($statistik->ausstellerinland)."','".mysql_real_escape_string($statistik->ausstellerausland)."','".mysql_real_escape_string($statistik->ausstellertotal)."','".mysql_real_escape_string($statistik->ausstellerindirektinland)."','".mysql_real_escape_string($statistik->ausstellerindirekttotal)."','".mysql_real_escape_string($statistik->ausstellerprueforg)."','".mysql_real_escape_string($statistik->ausstellertext)."','".mysql_real_escape_string($statistik->besucherjahr)."','".mysql_real_escape_string($statistik->besuchermonat)."','".mysql_real_escape_string($statistik->besucherinland)."','".mysql_real_escape_string($statistik->besucherausland)."','".mysql_real_escape_string($statistik->besuchertotal)."','".mysql_real_escape_string($statistik->fachbesucherinland)."','".mysql_real_escape_string($statistik->fachbesucherausland)."','".mysql_real_escape_string($statistik->fachbesuchertotal)."','".mysql_real_escape_string($statistik->besucherprueforg)."','".mysql_real_escape_string($statistik->besuchertext)."','".mysql_real_escape_string($statistik->ausstellerstruktur)."','".mysql_real_escape_string($statistik->besucherstruktur)."','".mysql_real_escape_string($datum->messeverband)."','".mysql_real_escape_string($datum->branchen)."','".mysql_real_escape_string($datum->messeemail)."','".mysql_real_escape_string($datum->messeurl)."','".mysql_real_escape_string($datum->mitveranstalter)."')"); 
14.
15.
        } else { 
16.
            echo 'Die Datei '. $filename .' konnte nicht geöffnet werden'; 
17.
18.
    } else { 
19.
		echo 'Die Datei '. $filename .' existiert nicht'; 
20.
	}
Wo könnte hier der Fehler liegen, Ich habe schon nach fehlenden, zusätzlichen values und Tabellenaufrufen gesucht bin mir aber nicht sicher ob ich alle gefunden habe.

Vielen Dank im Voraus

askFabrice
Mitglied: bytecounter
16.09.2011 um 15:00 Uhr
Hallo,

das steht doch in der Fehlermeldung...die Anzahl der Spaltennamen passt nicht zur Anzahl der übergebenen Werte,
Mehr kann man bei dem wirren Code auch nicht sagen.

Zukünftig Code bitte formatiert posten (s. Hilfe)!

vg
Bytecounter
Bitte warten ..
Mitglied: mrtux
16.09.2011 um 15:02 Uhr
Hi !

Bitte setze dein Skript zumindest mal in die Code Tags des Forums, denn sonst kannst Du da vermutlich ewig auf Hilfe warten, weil das (so) viel zu unübersichtlich ist und man das keinem Helfer (in der Form) zumuten kann.

mrtux
Bitte warten ..
Mitglied: Xaero1982
16.09.2011, aktualisiert 18.10.2012
Moin,

sorry, aber das hier:

01.
messedaten(muamesseid,messeid,kurzname,messetitel,messeort,bundesland,messeland,isoland,gelaende,gelaendeid,startdatum,enddatum,sortkey,anmeldeschluss,aufbau,abbau,debeteiligung,messetyp,gruendung,turnus,zulassung,geschlossen,sektoren,nettojahr,nettomonat,nettoinland,nettoausland,nettototal,nettosonder,nettoprueforg,nettotext,ausstellerjahr,ausstellermonat,ausstellerinland,ausstellerausland,ausstellertotal,ausstellerindirektinland,ausstellerindirektausland,ausstellerindirekttotal,ausstellerprueforg,ausstellertext,besucherjahr,besuchermonat,besucherinland,besucherausland,besuchertotal,fachbesucherinland,fachbesucherausland,fachbesuchertotal,besucherprueforg,besuchertext,ausstellerstruktur,besucherstruktur,messeverband,branchen,messeemail,messeurl,messeveranstalter)
ist doch wohl nen schlechter Witz oder?
Wer kam denn auf die Idee so eine kranke Tabelle anzulegen?
edit: Ich seh schon: Deine Idee! https://www.administrator.de/forum/falsche-ausgabe-von-umlauten-unter-my ...
Dann viel Spaß beim korrekten Anlegen von Tabellen etc. *schüttel*

Schon mal was von Normalisierung gehört?

@mrtux: Lieb gemeint, aber selbst MIT Code-Tags kann man hier nichts erkennen :D

Das:
01.
mysql_real_escape_string

geht auch eleganter ohne es vor jeden Wert zu knallen.

Ansonsten wurde ja schon alles in der Fehlermeldung und von Bytecounter gesagt:

Spaltenanzahl!=Übergabewerte

VG
Bitte warten ..
Mitglied: AskFabrice
16.09.2011 um 15:28 Uhr
Hallo Zusammen
@bytecounter: Ok werde dann wohl noch ein paar mal über meinen Code gehen müssen.
@xaero: Wie geht das eleganter? bin nicht besonders gut mit PHP. Normalisierung kenne ich doch das ist leider nicht meine DB, sie wurde mir von der Firma welche die Daten liefert so vorgegeben -.-

Habe den Code nun in Code Tags reingetan.

Grüsse askFabrice
Bitte warten ..
Mitglied: dog
17.09.2011 um 00:40 Uhr
$connect->connect("set names 'utf8'"); /*<<<<<<<<<<<<< WICHTIG*/

Möp, falsch!
In der PHP-Dokumentation wird explizit darauf hingewiesen, dass man genau das nicht machen darf!

Zu dem Query muss man ja nichts mehr sagen.
Sowas kann man übrigens auch dynamisch bauen.

01.
<?php 
02.
 
03.
	$keys = array('a','b','c'); 
04.
	 
05.
	$vals = array(); 
06.
	 
07.
	foreach($keys as $key) { 
08.
		$vals[] = '"'.mysql_real_escape_string($keys->$key).'"'; 
09.
10.
	 
11.
	$query = sprintf('INSERT INTO tbl(%s) VALUES(%s)',implode(', ',$keys),implode(', ',$vals)); 
12.
	 
13.
?>
Bitte warten ..
Ähnliche Inhalte
PHP

PHP - Variable in anderes PHP-Skript mitgeben

gelöst Frage von Jens4everPHP3 Kommentare

Hi zusammen, könnt ihr mir kurz helfen? Ich habe folgendes vor: Ich möchte, dass beim Aufruf von "check1.php" eine ...

PHP

Schreibrechte für Datei im PHP-Skript

gelöst Frage von itebobPHP1 Kommentar

Hallo, ich habe ein PHP-Skript schreiben1.php, das in eine Datei txt123.php schreibt. Wenn schreiben1.php so ausgeführt wird h ttp://server.tld/schreiben1.php ...

PHP

Abhängigkeiten in den PHP-Skripts vorbeugen

Frage von itebobPHP2 Kommentare

PHP-Skripts vom Webspace des UsersA sind per symbolischen Link in Webspaces mehrerer User eingebunden. Die Websites dieser User sind ...

Debian

Mit Shell Skript PHP ausfüheren

gelöst Frage von zeroblue2005Debian6 Kommentare

Hallo Zusammen, lacht nicht aber habe ich eben noch nie gemacht ich möchte eine Sh Datei haben die folgendes ...

Neue Wissensbeiträge
Windows 10

Win 10 - Storage Sense - neues herstellerseitiges Cleaning-Tool statt cleanmgr

Tipp von mathu vor 4 StundenWindows 10

Vermutlich ab dem Oktoberrelease wird eine neue Speicherbereinigungssuftware ausgeliefert von Microsoft. Cleanmgr.exe soll angeblich aber noch weiter parallel verfügbar ...

E-Mail
Neueste Masche der Bad Guys: Offene Erpressung
Information von the-buccaneer vor 1 TagE-Mail14 Kommentare

"Warum den komplizierten Weg über einen Kryptotrojaner nehmen, wenn man die Leute auch direkt erpressen kann?" haben sich wohl ...

Viren und Trojaner
Neues ct-desinfect 2018 erschienen
Information von Lochkartenstanzer vor 1 TagViren und Trojaner

Moin, heise hat eine neues Sonderheft Desinfect veröffentlicht (9,90€/12,90€) . Falls jemand öfter mal Kisten "säubern" muß ist das ...

Sicherheit

Ransomware legt Fluginformationssystem des Airport Bristol lahm

Information von kgborn vor 1 TagSicherheit

Da war wohl eine Wochenend-Schicht für die Flughafen IT angesagt. Ein Ransomware-Befall bzw. ein Hackerangriff sorgte dafür, dass drei ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Kombiniere mehrere 4G Router zu einem Netzwerk - Anwendung kleine LAN (10-20 Leute)
Frage von HulkTheHeroLAN, WAN, Wireless19 Kommentare

Guten Mittag liebes Administrator - Fourm, ich hoffe ich habe das richtige Thema ausgewählt - ansonsten bitte gerne verschieben ...

Firewall
Blocken illegaler Film-Streams
gelöst Frage von CoreknabeFirewall19 Kommentare

Moin Wissende, unsere kleine Hochschule möchte gern das illegale Streaming von Kinofilmen und Serien unterbinden. Wir sperren bisher alle ...

Windows Server
2012 R2 Server Keine Anmeldung möglich Meldung: Laut den Sicherheitsrichtlinien auf diesem PC sollen informationen zur letzten interaktiven Anmeldung angezeigt werden
Frage von Speedy18A4Windows Server18 Kommentare

Hallo, ich habe vor einigen Wochen einen zweiten Domain Controller zu meiner Domain hinzugefügt. Funktionierte alles wunderbar. Auch die ...

iOS
Virus auf iphone
Frage von jensgebkeniOS17 Kommentare

hallo gemeinschaft, habe einen virus auf meinem iphone es kommen zwei meldungsfenster 1. online-2018-software-free.win 2. wpform.com - please click ...