Prüfen, ob Datensatz vorhanden (schon wieder)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Prüfen, ob Datensatz vorhanden (schon wieder)

    moin, moin
    ich bins schon wieder einmal. Ich hab nun den ganzen Tag gesucht und verzweifel langsam. Mein Problem: ich übertrage Daten von einer CSV-Datei in eine Datenbank. Nun möchte ich, dass mein Script vorher prüft, ob der Datensatz schon vorhanden ist oder nicht. Es sollen nur die Datensätze eingetragen werden, die noch nicht in der Datenbank sind. Ich hab es mit folgendem Script versucht:
    PHP-Code:
    <?php
    $datei
    =fopen($db_File,"r");
    $daten=fread($datei,filesize($db_File));
    fclose($datei);
    $datensaetze=explode("\n",$daten);
    $result array_unique ($datensaetze);
    mysql_connect($db_Hostname$db_UserName$db_Password) || die("Can't Connect to Database: ".mysql_error());
    mysql_select_db($db_Database) || die("FEHLER ".mysql_error());
    for(
    $i=1;$i<sizeof($result);$i++) 
    {    
        
    $result[$i]=str_replace('"','',$result[$i]);
        
    $result[$i]=str_replace(',','.',$result[$i]);
        
    $datenfeld[$i]=explode(";",$result[$i]);
        
    $suchen mysql_query ("SELECT nummer FROM partner_clean WHERE `nummer` !='.$datenfeld[$i][0].' 
            AND partner_id='adbutler'"
    )|| die("FEHLER ".mysql_error());
        if (!
    $suchen
        {
            
    $eintrag "INSERT INTO partner_clean (nummer, programm, datum, id_kunde, betrag, k_status, partner_id) 
            VALUES('"
    .$datenfeld[$i][0]."','".$datenfeld[$i][1]."','".$datenfeld[$i][2]."','".$datenfeld[$i][3]."',
                   '"
    .$datenfeld[$i][4]."','".$datenfeld[$i][5]."','adbutler')";
            
    $eintragen mysql_query($eintrag);
            
        }
        else
        {
            echo 
    "Schon vorhanden";
        }
    }
    $sql mysql_query ("UPDATE partner_clean SET k_status='offen' where k_status='best„tigt' AND partner_id='adbutler'");
    $sql mysql_query ("DELETE FROM partner_clean WHERE k_status ='' AND partner_id = 'adbutler'");
    $sql mysql_query ("DELETE FROM partner_clean WHERE k_status !='offen' AND partner_id='adbutler'");
    $typ1 mysql_query ("UPDATE partner_clean SET typ='oA' where typ='' AND partner_id='adbutler'");
    mysql_close();
    ?>
    Es kommen keine Fehlermeldungen. Er meldet mir viermal, schon vorhanden, obwohl die Datensätze noch nicht in der Datenbank sind. Kann mir vielleicht jemand einen Hinweis geben, wo mein Fehler liegt?

    Gruß Stoner

  • #2
    PHP-Code:
    $suchen mysql_query ("SELECT nummer FROM partner_clean WHERE `nummer` !='.$datenfeld[$i][0].' 

            AND partner_id='adbutler'"
    )|| die("FEHLER ".mysql_error());
    if (!
    $suchen
    suchen ist immer true?
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      okay, das war der erste Fehler, es muss heissen:
      PHP-Code:
      $suchen mysql_query ("SELECT nummer FROM partner_clean WHERE `nummer` ='.$datenfeld[$i][0].' AND partner_id='adbutler'"
      Aber auch dann funzt es nicht..
      ......
      Nee, $suchen ist nicht immer true, d.h. es kann sein, dass der Datensatz nicht da ist, dann ist $suchen=false (oder hab ich das falsch verstanden?)

      Wenn ich dann schreibe;
      PHP-Code:
      if ($suchen=false).... 
      schreibt er aber auch nix in die Datenbank

      Gruß Stoner

      Kommentar


      • #4
        dann ist $suchen=false (oder hab ich das falsch verstanden?)
        letzteres, ...? ich glaub des query ist immer true, wenns richtig ausgeführt wird, sonst bräuchstest ja kein or die(), mußt schon fetchen (oder num_rows), um nen false zu kriegen, ... könnte aber sein, daß ich mir irre, keene lust, nachzuschauen ...

        Wenn ich dann schreibe;
        PHP-Code:
        if ($suchen=false).... 
        schreibt er aber auch nix in die Datenbank
        ja, wenn du suchen den wert false zuweist, sollte suchen dann false sein, was du mit
        PHP-Code:
        if ($suchen==false).... 
        überprüfen könntest ... oder auch
        PHP-Code:
        if (!$suchen).... 
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          lol, nun ist das Problem andersrum:
          PHP-Code:
          for($i=1;$i<sizeof($result);$i++) 
          {    
              
          $result[$i]=str_replace('"','',$result[$i]);
              
          $result[$i]=str_replace(',','.',$result[$i]);
              
          $datenfeld[$i]=explode(";",$result[$i]);
              
          $suchen "SELECT * FROM partner_clean WHERE nummer ='.$datenfeld[$i][0].' AND programm = '.$datenfeld[$i][1].' ";
              
          $search mysql_query($suchen);
              if(
          mysql_num_rows($search) > 0)
              {
                  echo (
          "Schon vorhanden<br>");
              }
              else
              {
                  
          $eintrag "INSERT INTO partner_clean (nummer, programm, datum, id_kunde, betrag, k_status, partner_id) 
                  VALUES('"
          .$datenfeld[$i][0]."','".$datenfeld[$i][1]."','".$datenfeld[$i][2]."','".$datenfeld[$i][3]."',
          '"
          .$datenfeld[$i][4]."','".$datenfeld[$i][5]."','adbutler')";
                  
          $eintragen mysql_query($eintrag);
              }

          nun trägt das Script alles ein, aber auch, wenn die Datensätze schon vorhanden sind. Ich werd noch zum Elch. Was mach ich denn nu falsch?

          Gruß Stoner

          Kommentar


          • #6
            PHP-Code:
                $suchen "SELECT * FROM partner_clean WHERE nummer ='.$datenfeld[$i][0].' AND programm = '.$datenfeld[$i][1].' ";
            echo 
            $suchen
            schau mal aufs highlighting
            PHP-Code:
                $suchen "SELECT * FROM partner_clean WHERE nummer =".$datenfeld[$i][0]." AND programm = ".$datenfeld[$i][1]." ";
            echo 
            $suchen
            sind die felder numerisch? sonst
            PHP-Code:
                $suchen "SELECT * FROM partner_clean WHERE nummer ='".$datenfeld[$i][0]."' AND programm = '".$datenfeld[$i][1]."' ";
            echo 
            $suchen
            jetzt?
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar

            Lädt...
            X