Nicole: PHP-MYSQL-UPDATE

Hallo erst mal ;-)
Mir stellt sich folgende Frage:

Gibt es ein update query um etwas in eine
Mysql DB  nachzutragen, ohne vorher den Inhalt auszulesen?

Klar mit Zahlen ist das einfach:
z.B.
mysql_query("UPDATE personen SET age=age+1;");

aber...
wie ist das mit TEXT ?

Bei Textdatenbanken ist das doch auch ganz einfach,
Dateizeiger auf anfang oder Ende und Text anfügen...

Dann muss das doch bei  Mysql erst recht gehen , oder ?

Danke für euere Hilfe
Nikki

  1. Halihallo Nicole

    Klar mit Zahlen ist das einfach:
    z.B.
    mysql_query("UPDATE personen SET age=age+1;");

    aber...
    wie ist das mit TEXT ?

    Vielleicht:

    UPDATE personen SET beschreibung=CONCAT(beschreibung, 'anzufügender Text')

    Anzumerken ist: Das ist _nicht_ im Sinne von MySQL noch SQL ist.

    Viele Grüsse

    Philipp

    1. Hallo Phillip,
      danke für deine Hilfe. Klappt Super ;-)

      Aber...
      Ein wenig Angst hast du mir schon gemacht:
      "... nicht im Sinne mysql..."

      Was bedeutet das genau ?
      1. Kein Verlass drauf?
      2. Inkompalität bei zukünftigen mysql Versionen ?
      3. ...?

      Würdest du sagen: Besser ist die umständliche Methode,
      also select -> mysql_fetch_array() -> str erzeugen,
      und dann schlussendlich  alter Inhalt + neuer Inhalt
      wieder in MySql ?

      Danke
      Nikki

      ps. Wenn ich schon mal Jemanden mit Ahnung vor mir habe:
      Kannst du mir sagen welches die gefährlichsten Unterschiede
      zwischen den Versionen PHP4.04 und PHP4.3 sind ?

      Wollte upgraden, aber habe Angst dass manche Scripte dann
      nicht mehr laufen.

      Vielleicht:

      UPDATE personen SET beschreibung=CONCAT(beschreibung, 'anzufügender Text')

      Anzumerken ist: Das ist _nicht_ im Sinne von MySQL noch SQL ist.

      Viele Grüsse

      Philipp

      1. Halihallo Nicole

        "... nicht im Sinne mysql..."
        Was bedeutet das genau ?

        1. Kein Verlass drauf?

        Doch. Es ist Verlass darauf.

        1. Inkompalität bei zukünftigen mysql Versionen ?

        AFAIK nein. CONCAT wird ziemlich sicher auch künftig unterstützt, wie auch, dass
        der aktuelle Record erst ausgelesen wird und man diesen weiterverarbeiten kann.

        Würdest du sagen: Besser ist die umständliche Methode,
        also select -> mysql_fetch_array() -> str erzeugen,
        und dann schlussendlich  alter Inhalt + neuer Inhalt
        wieder in MySql ?

        Einen Umweg über Scripte würde ich nicht empfehlen, solange die Funktion von MySQL
        genügen.

        ---

        Was ich damit sagen wollte:
        Der Sinn und Zweck von UPDATE (also Data Manipulation Language) ist es, Daten zu ändern.
        Wenn du so willst, vermischst du das UPDATEN mit SELECT, du "befiehlst" der Datenbank,
        die Daten zuerst einzulesen und dann Aufgrund dieser Daten etwas zu tun (CONCAT).
        Der Sinn von UPDATE besteht jedoch nicht darin, Daten zuerst einlesen zu müssen, UPDATE
        ist für das updaten von Records gedacht; die "Funktionalität", dass Daten zuerst ein-
        gelesen werden ist ein "Feature", wohl in vielen Datenbanken implementiert, jedoch nicht
        im eigentlichen Sinne nötig. Du wirst wohl noch lange nicht (bzw. gar nie, wer weiss),
        damit Probleme bekommen, aber eigentlich ist ein UPDATE ein Befehl, der einfach den
        Datenbestand der Datenbank ändert; diese Änderung sollte losgelöst von
        irgendwelchen "Backticks" (also Zugriff auf bestehende Daten) sein.
        Meine Kritik galt der Vermischung zweier Funktionen: Auslesen _und_ Updaten von
        Information. Sinnvoller wäre es, die Daten zuerst auszulesen, im Script zu manipulieren
        und dann über UPDATE in der Datenbank zu aktualisieren, denn das Script definiert die
        Funktionalität, die Datenbank verwaltet nur Daten; dennoch, wenn du eine Funktionalität
        (wie das zusammenfügen von Text) über die Datenbank lösen kannst, macht das Sinn, da
        das Script viel langsamer ist.
        Meine Aussage mochte etwas übertrieben sein, du darfst dieses Verfahren natürlich
        forsetzen und wirst wohl nie auf Probleme diesbezüglich treffen.

        ps. Wenn ich schon mal Jemanden mit Ahnung vor mir habe:
        Kannst du mir sagen welches die gefährlichsten Unterschiede
        zwischen den Versionen PHP4.04 und PHP4.3 sind ?

        Was meinst du mit gefährlichen Unterschieden?

        Wollte upgraden, aber habe Angst dass manche Scripte dann
        nicht mehr laufen.

        PHP4.3 und PHP4.04 sind weitestgehend kompatibel. Bis auf eine sinnvolle Änderung, die
        es zu benennen gilt: register_globals ist jetzt standardmässig "off", folglich kannst
        du nicht mehr über den gleichnamigen Variablennamen auf Formulardaten zugreifen, sondern
        musst standardisierte Zugriffe verwenden (das ist IMHO eine Änderung, welche zwischen
        diesen beiden Versionen stattgefunden hat) :

        statt $name, jezt $_POST["name"] oder $_GET["name"]

        Viele Grüsse

        Philipp

        1. Hallo Phillip,
          vielen Dank für deine komplexe Antwort.

          Macht schon Spass deine Sachen zu lesen, weil
          nicht Fachwort Chinesisch, wie bei vielen Anderen.

          Gruss
          Nikki

          ps. Ja das mit den REGISTER_GLOBALS befürchtete ich
          schon. Habe zwar einen eigenen Server, aber nicht viel
          Ahnung davon.(So könnte ich REGISTER_GLOBALS auf ON setzen).

          So gibts vorinstalliert mehrere PHP versionen,
          die ich wahlweise in einer HTTP.conf Datei auswählen kann.
          ABER... es gibt keine PHP.ini Datei. Der Support des Servers
          sagt zwar ich könnte eine anlegen, aber die können mir
          nicht mal sagen wo ich diese hinlege, geschweige denn was
          ich alles angeben darf, muss, kann. ;-)

          1. Halihallo Nicole

            vielen Dank für deine komplexe Antwort.
            Macht schon Spass deine Sachen zu lesen, weil
            nicht Fachwort Chinesisch, wie bei vielen Anderen.

            Ist das kein Wiederspruch?? ;-)

            ps. Ja das mit den REGISTER_GLOBALS befürchtete ich
            schon. Habe zwar einen eigenen Server, aber nicht viel
            Ahnung davon.(So könnte ich REGISTER_GLOBALS auf ON setzen).

            Ich würde dir sehr empfehlen, deine Scripte lieber an register_globals=off anzupassen.
            Irgendwann wirst du nicht umherkommen, dich anzupassen. Lieber früher als später!

            So gibts vorinstalliert mehrere PHP versionen,
            die ich wahlweise in einer HTTP.conf Datei auswählen kann.
            ABER... es gibt keine PHP.ini Datei. Der Support des Servers
            sagt zwar ich könnte eine anlegen, aber die können mir
            nicht mal sagen wo ich diese hinlege, geschweige denn was
            ich alles angeben darf, muss, kann. ;-)

            Du solltest deinen Anbieter wechseln! :-)

            Viele Grüsse

            Philipp