OK!
Um das ganze nochmal zu veranschaulichen
Ich habe die data.xml jetzt mal so abgeändert:
Code:
<?xml version='1.0'?>
<data>
<entry>
<geb>1980-05-12</geb>
<name>Hans Wurscht</name>
<mobile>0179258464</mobile>
</entry>
<entry>
<geb>1952-09-23</geb>
<name>Peter Lustig</name>
<mobile>0160235648</mobile>
</entry>
</data>
meine DB installationsdatei sieht so aus:
Code:
<?php
$db = mysql_connect("localhost","root","");
mysql_query ("CREATE DATABASE data",$db);
$sql_db="data";
mysql_select_db($sql_db,$db) or die(mysql_error());
echo "Glückwunsch! Sie sind mit der Datenbank verbunden. ";
mysql_query ("CREATE TABLE entry (
geb DATE,
name VARCHAR(60),
mobile VARCHAR(20)
)") or die(mysql_error());
echo "Die Tables wurden in die Datenbankgeschrieben! ";
mysql_close($db)
?>
Meine PHP Datei die die Daten in die DB schreiben soll sieht aktuell so aus:
Code:
<?
global $element, $entry;
$entry = array();
function openElement( $parser, $tagName, $attrs )
{
global $element;
$element = $tagName;
}
function cData( $parser, $data )
{
global $element, $entry;
if( ( $element != 'entry' ) && ( $element != 'data' ) )
$entry[$element] .= $data;
}
function closeElement( $parser, $tagName )
{
global $entry;
if( $tagName == 'entry' )
{
// prepare sql query
while( list( $key, $value ) = each( $entry ) )
{
$fields .= "$key, ";
$values .= "'$value', ";
}
// remove trailing characters
$fields = substr( $fields, 0, strlen( $fields ) - 2 );
$values = substr( $values, 0, strlen( $values ) - 2 );
// remove all non-visible characters except SP, LF and CR.
$values = preg_replace( '/[^\x20-\xFF\x0A\x0D]/', '', $values );
// build sql query
$query = "INSERT INTO table ($fields) VALUES ($values)";
print "$query
\n";
// insert data
$result = mysql_query( $query )
or die( "DB ERROR: query failed: $query" );
// empty array
$entry = array();
}
}
// open connection and select database
$link = mysql_connect( 'localhost', 'root', '' )
or die( 'DB ERROR: could not connect to database!' );
mysql_select_db( 'data' ) or die( 'DB ERROR: could not select database' );
// create instance of xml parser
$parser = xml_parser_create();
// do not uppercase all element identifiers
xml_parser_set_option( $parser, XML_OPTION_CASE_FOLDING, false );
// element handlers
xml_set_element_handler( $parser, 'openElement', 'closeElement' );
// cdata handler
xml_set_character_data_handler( $parser, 'cData' );
// open data file
if (! ( $fp = fopen( 'data.xml', 'r' ) ) )
die( 'ERROR: could not open file!' );
// read data line by line
while( !feof( $fp ) )
{
// parse data line by line (without trailing \n)
if( !xml_parse( $parser, chop( fgets( $fp ) ) ) )
die( 'XML ERROR: ' .
xml_error_string( xml_get_error_code( $parser ) ) . ' in line ' .
xml_get_current_line_number( $parser )
);
}
// close data file
fclose( $fp );
// remove instance of xml parser
xml_parser_free( $parser );
// close database connection
mysql_close( $link );
?>
Wo ist hier der Fehler drin?
Ich bekomme nun nämlich wieder den selben Fehler:
Code:
INSERT INTO table (geb, name, mobile) VALUES ('1980-05-12', 'Hans Wurscht ', '0179258464')
DB ERROR: query failed: INSERT INTO table (geb, name, mobile) VALUES ('1980-05-12', 'Hans Wurscht ', '0179258464')
Ich weiss nicht was da nicht stimmt
Bitte um eure Hilfe
