PHP Script

Dr_Google

Mitglied
Hallo, ich hätte mal eine Frage.
Kennt ihr vielleicht ein php script welches den Inhalt der Datenbank prüft?

Ich muss nämlich meine Datenbank immer auf den neusten stand bring nun kommen aber bei der einspielung von Daten oft Datensätze vor die schon in der Datenbank vorhaden sind es müsste also prüfen können ob diese datensätze wirklich neue sind die in der datenbank noch nicht vorhanden sind.

Ich danke schonmal für alle anregungen jeglicher art

gruss

dr google
 
Mittels PHP sollte es nicht schwer sein diese Datei auszulesen.
Vor jedem INSERT ueberpruefst Du den ausgelesenen Datensatz mittels SELECT ob er bereits in der DB steht. Wenn nicht fuegst Du die Daten mittels INSERT ein.

Das Script sollte nichtmal all zu lang sein.
 
Ich verstehe zwar nicht genau was du willst aber ist vielleicht dieser Code das was du suchst?

PHP:
$res=mysql_query("SELECT * FROM tabelle WHERE name='$inhalt_aus_csv'");
if(mysql_num_rows($res)>0){
//vorhanden
}else{
//nicht vorhanden
}

/edit
Verdammt. Bevor ich diesen Beitrag geschrieben habe, wurden 2 andere vor mir abgeschickt.
 
Zuletzt bearbeitet:
Alternativ kannst du auch vorher die Daten aus der DB holen, gezielt nur die ID o.ä. eindeutige Kritrien in einem Array speichern.
bei jeder CSV-Zeile prüfst du ob der eindeutige Schlüssel bereits in dem Array vorhanden ist.
Wenn nicht merkst du dir den Datensatz zum Eintragen oder trägst diesen idirekt ein.
Dürfte dann etwas performanter sein, als bei jedem Datensatz die DB anzufragen, da die restlichen Arrayvergleiche im speicher Stattfinden.
bei grossen Datenmengen solltest du jedoch mit mit in_array() arbeiten sondern eher ala
if( !isset($array['deineindeutigerkey']) )
abfragen, da dies direkt an die richtige Stelle im Array spring und nicht jeden Datensatz durchsuchen muss. Macht sich aber erst bei grösseren Datenmengen, z.b. Arrays mit 20TSD und mehr Einträgen bemerkbar.
 
Das hört sich alles sehr gut an bin dabei das ganze so zu machen. Jetzt bin ich aber wieder auf ein Problem gestossen.I

ch habe eine CSV Datei mit vielen Datenfelder. Ich möchte wenn ich die CSV datei auslese nicht alle Felder angezeigt bekommen sonder nur ein paar.

Mit SQL wäre sowas kein problem Select 'spalte' * From 'tabelle' aber wie geht sowas mit CSV?

Beispieldatei
PHP:
<?php $zeile=0; 
  $bol=file_exists("newsletter.csv"); 
  if ($bol) 
     { 
       $datei = fopen("newsletter.csv","r"); 
          if ($datei) 
            { 
              print ("<p>Folgende User haben den Newsletter abonniert:</p>"); 
              print ("<table border='1'>"); 
              $dateigroesse=filesize("newsletter.csv"); 
              $data = fgetcsv ($datei, $dateigroesse, ";"); 
                    while($data!=false) 
                      { 
                         print "<tr>"; 
                         $zeile++;    
                         print ("<td>"); 
                         print ($zeile); 
                         print ("</td>"); 
                         $spalten = count ($data);                  
                               for ($c=0; $c < $spalten; $c++) 
                                 {            
                                   print ("<td>"); 
                                   print ($data[$c]); 
                                   print ("</td>"); 
                                  }    
                         print ("</tr>");  
                         $data = fgetcsv ($datei, $dateigroesse, ";"); 
                      } 
         fclose($datei); 
            } 
     } 
?>

Bei diesem Beispiel werden die ganzen felder ausgegeben

THX 4 Help
 
Zurück