0) {$restore["anzahl_zeilen"]=$config["minspeed"];} $restore["actual_table"]=strtolower(get_tablename($complete_sql)); //Tabellenfelderanzahl ermitteln $restore["actual_fieldcount"]=AnzahlTabellenfelder($complete_sql); $restore["num_table_fields"][$restore["actual_table"]]=$restore["actual_fieldcount"]; //DEFAULT CHARSET HACK if((GetMySQLVersion()-4.1)<0) { $ll=strpos(strtoupper($complete_sql)," DEFAULT CHARSET"); if($ll) { $ll2=strpos($complete_sql," ",$ll+12); if($ll2) $complete_sql=substr($complete_sql,0,$ll).substr($complete_sql,$ll2); else $complete_sql=substr($complete_sql,0,$ll).';'; } } //Hack für Import MySQL>4.1 auf kleineren Versionen $complete_sql=DownGrade($complete_sql); $restore["table_create"][$restore["actual_table"]]=$complete_sql; $sqlparser_status=100; //Befehl komplett } } if($sqlparser_status==3) { //Datensatzaktion if(!isset($restore["num_table_fields"][$restore["actual_table"]])) $restore["num_table_fields"][$restore["actual_table"]]=$restore["actual_fieldcount"]; if($zeile!="" && (substr(rtrim($zeile),-2)==");" || substr(rtrim($zeile),-2)=="),")) { if($restore["flag"]==-1 && substr(rtrim($zeile),-2)=="),") { $restore["erweiterte_inserts"]=1; $restore["flag"]=1; } elseif($restore["flag"]==-1 && substr(rtrim($zeile),-2)==");") { $restore["flag"]=0; } //scheinbar ein Ende erreicht $AnzahlFelder=SQL_Is_Complete($complete_sql,$restore["num_table_fields"][$restore["actual_table"]]); if($AnzahlFelder==$restore["num_table_fields"][$restore["actual_table"]]) { $sqlparser_status=100; if(substr(rtrim($zeile),-2)==")," || ($restore["erweiterte_inserts"]==1 && substr(rtrim($zeile),-2)==");")) { if($complete_sql!="" && substr($complete_sql,0,1)=="(") { $complete_sql="INSERT INTO `".$restore["actual_table"]."` VALUES ".$complete_sql; } if(substr($complete_sql,-1)==",") $complete_sql=substr($complete_sql,0,strlen($complete_sql)-1); } } if($AnzahlFelder>$restore["num_table_fields"][$restore["actual_table"]] && $restore["erweiterte_inserts"]==0) { if(!isset($restore["table_create"][$restore["actual_table"]])) { include("inc/functions_sql.php"); $restore["table_create"][$restore["actual_table"]]=GetCreateTable($databases["db_actual"],$restore["actual_table"]); } echo '
'; echo '

Parser-Fehler : zuviele gezählt in Tabelle '.$restore["actual_table"].' ('.$AnzahlFelder.' statt '.$restore["num_table_fields"][$restore["actual_table"]].')'; echo '

CREATE-Anweisung

'; echo '

INSERT-Anweisung


'; echo '

'.$zeile; die; } } } if($sqlparser_status==4) { //Createindex if($last_char==";" ) { if($config["minspeed"]>0) {$restore["anzahl_zeilen"]=$config["minspeed"];} $sqlparser_status=100; //Befehl komplett } } if($sqlparser_status==5) { //Anweisung if($last_char==";" ) { if($config["minspeed"]>0) {$restore["anzahl_zeilen"]=$config["minspeed"];} $sqlparser_status=100; //Befehl komplett } } if ( ($restore["compressed"]) && (gzeof($restore["filehandle"])) ) $restore["fileEOF"]=true; if ( (!$restore["compressed"]) && (feof($restore["filehandle"])) ) $restore["fileEOF"]=true; } return $complete_sql ; } function lock_table() { global $config,$restore; if ($config["lock_tables"]==1 && (isset($restore["actual_table"])) && ($restore["actual_table"]<>"unbekannt") ) { $sql="LOCK TABLES `".$restore["actual_table"]."` WRITE"; $res=MSD_query($sql) || die(SQLError("Kein Lock ausgeführt!",mysql_error())); } } // extrahiert auf einfache Art den Tabellennamen aus dem "Create"-Befehl function get_tablename($t) { global $restore; $t=trim(str_replace("CREATE TABLE","",strtoupper($t))); $t=trim(str_replace("("," ",$t)); $w=explode(" ",$t); $tn=$w[0]; $restore["table_ready"]++; if(substr($tn,0,1)=="`") $tn=substr($tn,1,strlen($tn)-2); return $tn; } // extrahiert auf einfache Art den Tabellennamen aus dem "Create"-Befehl function get_tablename_aus_insert($t) { $t=substr(strtolower($t),strpos(strtolower($t), "into ")+5); $w=explode(" ",$t); $tn=$w[0]; if(substr($tn,0,1)=="`") $tn=substr($tn,1,strlen($tn)-2); return $tn; } function AnzahlTabellenfelder($s,$debug=0) { // ermittelt die Anzahl der Spalten einer Tabelle aus einer CREATE-Anweisung $anz=$anz_delimter=$rit=$klammerstart=$klammerauf=$klammerzu=0; $s=strtoupper($s); $i=strpos($s,"(")+1; $s=substr($s,$i); $tb=explode(",",$s); $defaultstart=false; for ($i=0;$i'.$anz." [offene Klammern: $klammerstart] --$rit
"; } return $anz; } function SQL_Is_Complete($s,$expected=0,$debug=0) { global $restore; $anz=$f_begin=$f_end=$restore["erw_anz"]=0; $Backslash=chr(92); $s=trim(strtoupper(($s))); if(substr($s,-2)==");" || substr($s,-2)=="),") $s=substr($s,0,strlen($s)-2); if(substr($s,-1)==")") $s=substr($s,0,strlen($s)-1); if(strpos($s," VALUES")) { $i=strpos($s," VALUES")+7; $s=substr($s,$i); } $i=strpos($s,"(")+1; $s=substr($s,$i); $tb=explode(",",$s); for ($i=0;$i0 && $anz==$expected-1 && substr($v,-1)==")") { $v=substr($v,0,strlen($v)-1); // ) entfernen //if($i+12) { $f_end=1; } elseif (($B_Delimiter % 2)==1 && strlen($v)>2) { //ist mit `'` maskiert $f_end=0; } elseif(($B_Esc % 2)==1) { //ist mit Backslash maskiert $f_end=0; } else { $f_end=1; } } } if($debug==1) echo "$f_begin/$f_end Feld $i: ".htmlspecialchars($tb[$i])."- $anz ($B_Ticks / $B_Esc)
"; if($f_begin==1 && $f_end==1) { $anz++; $f_begin=$f_end=0; if($anz==$expected) { $restore["erw_anz"]++; if($debug==1) echo "
".$restore["erw_anz"].".Insert - (".$anz." Felder)
"; $anz=0; } } } if($anz==0 && $expected>0 && $restore["erw_anz"]>0) $anz=$expected; return $anz; } ?>