MySQL Datensätze nacheinander updaten

Wir sammeln alle Infos der Bonusepisode von Pokémon Karmesin und Purpur für euch!

Zu der Infoseite von „Die Mo-Mo-Manie“
  • Hi,


    also ich möchte in einer DB die Datensätze alle aufeinmal updaten, dafür ich hab ich dieses Skript geschrieben:


    Aber i-wie wird nix verändert...

  • Wenn man nicht weiß, um was es geht, einfach mal in die gepinnten Topics schauen. Dort is eins mit Info-Links dabei, dort steht alles wichtige.


    @Topic: ich werd mir das gleich ma ansehen, wenn ich's rausbekomm, editier ich 's hier rein.

  • mm kommt eine Fehlermeldung? wen ja gebe die uns mal. Habe nicht kanz so viel anhnung aber ich will versuchen zu helfen.naja vieleicht ist es dr Fehler:

    PHP
    $c = 0;
    while($row = mysql_fetch_array($query)); //hast du vieleicht den ; vergessen?
    {


    ich kenn mich ned aus abe rich wil wedesten versuchen zu helfen.

  • mm kommt eine Fehlermeldung? wen ja gebe die uns mal. Habe nicht kanz so viel anhnung aber ich will versuchen zu helfen.naja vieleicht ist es dr Fehler:

    PHP
    $c = 0;
    while($row = mysql_fetch_array($query)); //hast du vieleicht den ; vergessen?
    {


    ich kenn mich ned aus abe rich wil wedesten versuchen zu helfen.

    Nein da gehört kein Semikolon hin, weil es in einer Anweisung drinnen steht.
    Der mehr oder weniger Fehler liegt weiter unten in der while Schleife mit dem UPDATE, weil das statement meine variable $hc nicht mag oder so. Das da oben wird dazu benötigt um die Einträge zu zählen, die vorhanden sind!
    Aber danke :thumbsup:

  • Also so?

    PHP
    while($hc>0)
    {
        $sql2 = "UPDATE `**`.`aktien` SET `Kurs` = \'250\' WHERE `aktien`.`ID` = $hc;"; 
        $query2 = mysql_query($sql2,$conn);
    $hc--;
    }

    würde sagen das es jetzt stimmt. (Wie immer weiß es aber nicht genau) da 250 ja in [' '] stand. Da du ja davor den Code auch mit
    [ ' ] gemacht hast hat es nicht gefunkt. So habe ich es zumindest in meinem Buch beigebracht bekommen.
    Hoffe konnte dir diesmal helfen. :thumbsup:

  • Ich würds so machen:

    PHP
    $sql2 = "UPDATE `**`.`aktien`           SET `Kurs` = '250'          WHERE `aktien`.`ID` = ".$hc.";";


    So kannst du einfache Anführungszeichen im Query benutzen, ohne diese zu escapen. Variablen würd ich immer über den Verbindungsopertor einfügen, auch bei der Verwendung von doppelten Anführungszeichen. IS zwar nicht Pflicht, aber so hab ich 's aus dem Code des WCF gelernt^^


    Ansonsten sieht imo der SELECt-Query auch nicht ganz richtig aus, aber das kann ich nich ganz sagen, da ich deine Tabellenstruktur nich kenne. Aber imo müsste der so aussehen:

    PHP
    $sql = "SELECT `aktien`.* FROM aktien";
  • Vielleicht mal die Datenbank-Namen in den Queries weg lassen, also so:

    PHP
    $sql = "SELECT * FROM aktien";

    und

    PHP
    $sql2 = "UPDATE `aktien` 
              SET `Kurs` = '250'
              WHERE `ID` = ".$hc.";";


    Ansonsten wüsste ich jetzt auch nich weiter, da ich ja deine Tabellen-Struktur nich kenne.

  • Also ich weiß net warum das net geht ;(
    Ich hab alles gemacht wie du das gesagt hast..
    Hier die Tabellenstruktur


    SQL
    `ID` int(255) NOT NULL auto_increment,
      `Name` varchar(500) NOT NULL,
      `Preis` int(255) NOT NULL,
      `Hoch` int(255) NOT NULL,
      `Niedrig` int(255) NOT NULL,
      `Kurs` int(255) NOT NULL,
      `Bild` varchar(500) NOT NULL,
      `Diagramm` varchar(500) NOT NULL,
  • EDIT:
    So. Fertig. Also ich verstehe die php-Syntax nicht, da ich kein php kann. Aber dein Query sieht so schon merkwürdig genug aus. Der Query müsste lauten:


    PHP
    UPDATE aktien SET Kurs = 250 WHERE id = $hc;


    Und das hat Leon ja schon geschrieben. Und offenabr sind auch die Anführungszeichen um die 250 egal. Ich würds aber ohne machen.


    PHP
    $sql2 = "UPDATE `aktien`           SET `Kurs` = 250          WHERE `ID` = ".$hc.";";


    Achte bei Zeilenumbrüchen im Code auch immer auf das Leerzeichen, dass da noch dazwischen muss ;)


    EDIT2:
    Ich hab mal bisschen bezüglich php im Intenet gestöbert und ich hab absolut nichts über irgendwelche Konventionen gefunden, die eingehalten werden müssen, um irgendeinen parser zufrieden zu stellen. Das heißt, dass offenbar original-SQL-Syntax verwedet werden kann. Demnach würde ich die ganzen apostrophähnlichen Anführungszeichen mal weglassen.


    PHP
    $sql2 = "UPDATE aktien SET Kurs = 250 WHERE ID = ".$hc.";";


    Ich konnte mir eh nicht erklären, was die da zu suchen hatten und dachte, es wäre eine eigenart, die man bei der Übergabe an die Schnittstelle zwischen php-Server und mySQL-Server beachten muss. Aber offenbar scheint das auch so zu gehen. probiers einfach mal aus und sag mir dann bitte bescheid - dann kann ich gleich was dazu lernen :D


    EDIT3:


    Mal ne ganz andere Frage... du willst tatsächlich, dass überall beim Kurs eine 250 steht? Dann brauchste das doch nicht mit solch einem Script machen. Die folgende Query reicht:


    PHP
    UPDATE aktien SET Kurs = 250;


    Weil so wie ich das dort jetzt gesehen habe, schaust du erstmal, wie viele Zeilen es gibt und zählst dann alle nacheinander durch. Ist doch umständlich.

  • Danke für die Hilfe, aber es funkt nicht ;(
    Und nein ich will nicht in jedem Feld 250 stehen haben, aber ich hab mir angwöhnt zuerst die Grundfunktionen zu schreiben, und darauf aufzubuaen. Also ich mach das immer so:
    Grund gerüst -> Test -> test erfolgreich -> nächste funktion -> testen -> nächste funktionen^^


    So lernen wir das, und ich finde das gut^^