MYSQL streikt teilweise

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

  • MYSQL streikt teilweise

    hallo,

    also ich eine Ein Problem, und zwar möchte ich eigentlich nur, dass eine Vorhandene Datenbank gefüllt wird, es gibt 3 Felder, "id int(11), pic varchar(30), typ int(10)"

    nun soll einfach nur bei id = $i
    typ = 2 und pic = "$i".".png" sein, und das soll er 49 mal machen, hier mein Code:

    PHP-Code:
    $i 1;
    $counSig 49;

    while (
    $i <= $counSig) {

    $pic "$i".".png";

    $vorhandenabfrage "SELECT * FROM `sig_aim` WHERE `id`='$i'";
      
    $gogogo2 mysql_query($vorhandenabfrage);
      
    $row2 mysql_fetch_object($gogogo2);
         
    $id $row2->id;
         
    if (
    $id != $i) {
       
    $eintrag "INSERT INTO sig_aim (typ, pic) VALUES ('2', '$pic')";
      
    $eintragen mysql_query($eintrag) or exit(mysql_error());

        echo 
    "added: $i $pic $i $style ($id)<br />";
    }


      
    $i++;


    Es soll also nur hinzugefügt werden, wenn noch nicht vorhanden.
    Es kommt nur die Fehlermeldung, dass kein Datensatz gefunden wurde, was ja beim ersten mal auch richtig ist,
    Notice: Trying to get property of non-object in /home/www/100590/runescape/signature/aim/test.php on line 20
    added: 1 1.png 1 1 ()
    allerdings werden keine Daten in die db eingefügt, der "auto_increment" Wert wird aber angehoben, ich verstehe nicht, was da falsch sein könnte...

    Und das komischste ist, dass gestern noch geklappt hat, da hatte ich aber die Vorhandensein noch nicht, und seit dem ich die eingebaut habe, geht es nicht mehr.

  • #2
    Erstens: Warum vergleichst du die ID aus der Abfrage die du zur Prüfung des Vorhandensein machst mit der die du gerade einfügen möchtest, obwohl du das in der WHERE-Klausel ohnehin schon angegeben hast? Wäre es dann nicht einfacher zu prüfen ob ein Datensatz existiert, bspw. mit mysql_num_rows()?

    Zweitens: Aus welchem Grund gehst du davon aus, dass ein neu eingefügter Datensatz automatisch die ID von $i annimmt, obwohl du das an keiner Stelle an die INSERT-Query übergibst?
    Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

    Kommentar


    • #3
      Original geschrieben von ArSeN
      Erstens: Warum vergleichst du die ID aus der Abfrage die du zur Prüfung des Vorhandensein machst mit der die du gerade einfügen möchtest, obwohl du das in der WHERE-Klausel ohnehin schon angegeben hast? Wäre es dann nicht einfacher zu prüfen ob ein Datensatz existiert, bspw. mit mysql_num_rows()?

      Du hast recht, ich habe diesen Weg bisher immer genommen, um zu testen, ob eine Datensatz vorhanden ist, wobei ich dann einfach immer nur geguckt habe, ob $id != "" ist.

      Original geschrieben von ArSeN
      Zweitens: Aus welchem Grund gehst du davon aus, dass ein neu eingefügter Datensatz automatisch die ID von $i annimmt, obwohl du das an keiner Stelle an die INSERT-Query übergibst?
      Da hast du recht, ich habe das nicht mit aufgenommen, da der erste Datensatz die ID 1 hat, und auch $i dann 1 ist, daher habe ich das einfach so laufen lassen, da klappt auch, sofern der autoincreese Wert anfangs auf 1 steht.

      Kommentar


      • #4
        Original geschrieben von Zipper5004
        ... sofern der autoincreese Wert anfangs auf 1 steht.
        Eben, wird aber nirgens geprüft.

        Zu dem Ersten nochmal: Wie was? Ob ID nicht leer ist? Na wenn du einen Datensatz gefunden hast wird der wohl eine ID haben hoffe ich, wenn deine Datenbank richtig modelliert ist. Mal andersrum gesagt: Auf anhieb sehe ich keinen Fehler zu dem ich sagen könnte "daran liegts", aber du machst alles viel komplizierter als es sein müsste. Darum möchte ich dir nahe legen, alles so einfach wie Möglich zu halten, damit man den Fehler dann besser lokalisieren kann.

        Gruß
        Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

        Kommentar

        Lädt...
        X