PHP-Skript für MySQL-Dump verdoppelt seltsamerweise VALUES



  • Hallo,
    ich habe mir fix als Modul für ein umfangreicheres System von mir Folgendes geschrieben, um es als automatische Backupmöglichkeit zu integrieren:

    $tables = $sql->query("SHOW TABLES FROM `".addslashes($data['db'])."`");
    while($table = $sql->fetch_array($tables)) {
    	$fields = $sql->query("SHOW FIELDS FROM `".addslashes($table[0])."`");
    
    	$x = array();
    	while($field = $sql->fetch_array($fields)) {
    		$x[] = $field['Field'];
    	 }
    
    	$cols = implode('`,`',$x);
    
    	$values = $sql->query("SELECT `".$cols."` FROM `".addslashes($table[0])."`");
    	while($value = $sql->fetch_array($values)) {
    		echo('INSERT INTO `'.$table[0].'` (`'.$cols.'`)<br />
    VALUES \''.implode('\',\'',$value).'\'<br /><br />');
    	 }
     }
    

    Interessanterweise werden jedoch die VALUES verdoppelt; vereinfachtes Beispiel:

    Richtig (so sollte es sein):
    - INSERT INTO tabelle (bla1,bla2) VALUES(blub1,blub2)

    Falsch (so ist es mit o. g. Snippet):
    - INSERT INTO tabelle (bla1,bla2) VALUES(blub1,blub1,blub2,blub2)

    Kann mir da jemand auf die Sprünge helfen?

    Ach ja, eine andere Form (extern, mysqldump o. ä.) soll es bitte nicht werden.



  • Ich Idiot, es wird ja der numerische und assoziative Index beachtet, habe nun mal FETCH_ASSOC genommen ...

    ... gibt es jedoch einen "eleganteren" Weg?
    Evtl. indem man direkt das aktuelle Feld anspricht ...


Anmelden zum Antworten