ichen: /PHP

Moin!
kann ich in einem mysql_query(); mehrere anweisungen an eine mysqldatenbank versenden?
zum beistpiel 3 inserts.
tschüssi
ichen

  1. 3 inserts für die ein und dieselbe Tabelle oder für verschiedene Tabellen?

  2. Hello,

    kann ich in einem mysql_query(); mehrere anweisungen an eine mysqldatenbank versenden?

    Nein. Mehrere Statements in einem Funktionsaufruf werden (noch) nicht unterstützt.

    zum beistpiel 3 inserts.

    Ein Multiinsert kann in einem Statement angewiesen werden, wenn er sich auf eine Tabelle beschränkt. Das meinte Thorsten wohl auch...

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
  3. kann ich in einem mysql_query(); mehrere anweisungen an eine mysqldatenbank versenden?

    Das ist problemlos möglich, indem die einzelnen Anweisungen durch Semikolon getrennt werden

    Beispiel:
    INSERT INTO ErsteTablle ( Spalte1 , Spalte2 , u.s.w. )
    VALUES ('Wert1' , 'Wert2' , u.s.w. ),
           ('Wert1' , 'Wert2' , u.s.w. );
    INSERT INTO AndereTabelle ( Spalte1 , Spalte2 , u.s.w. )
    VALUES ('Wert1' , 'Wert2' , u.s.w. );

    So etwa könntest du in "ErsteTablle" mehrere Einträge, und in "AndereTabelle" einen Eintrag gleichzeitig machen.

    1. Hallo

      Das ist problemlos möglich, indem die einzelnen Anweisungen durch Semikolon getrennt werden

      Nein, das ist in PHP (aus gutem Grund) nicht möglich.

      Gruß,
      Maddin

      1. Nein, das ist in PHP (aus gutem Grund) nicht möglich.

        Ich hab es grade ausprobiert und es funktioniert.

        MFJ

        1. 你好 Fridtjof,

          Nein, das ist in PHP (aus gutem Grund) nicht möglich.

          Ich hab es grade ausprobiert und es funktioniert.

          Du hast ausprobiert mit mysql_query() mehrere, durch Semikola getrennte
          Queries abzufeuern und es hat funktioniert? Welche Version von MySQL
          benutzt du, und welche Version von PHP?

          再见,
           CK

          --
          Fortune: We gave you an atomic bomb, what do you want, mermaids?
            -- I. I. Rabi to the Atomic Energy Commission
          http://wwwtech.de/
          1. Hallo Christian!

            Nein, das ist in PHP (aus gutem Grund) nicht möglich.

            Ich hab es grade ausprobiert und es funktioniert.

            Du hast ausprobiert mit mysql_query() mehrere, durch Semikola getrennte
            Queries abzufeuern und es hat funktioniert?

            Das geht nur mit der mysqli-Extension, und dort aus Sicherheitsgründen auch nur mit mysqli_multi_query().

            Welche Version von MySQL
            benutzt du, und welche Version von PHP?

            Unterstützt wird das seit 4.1, in diesem Fall tippe ich aber mal einfach auf phpMyAdmin ;-)

            Grüße
            Andreas

            --
            SELFHTML Linkverzeichnis: http://aktuell.de.selfhtml.org/links/
            1. Hello,

              Unterstützt wird das seit 4.1, in diesem Fall tippe ich aber mal einfach auf phpMyAdmin ;-)

              Da werden sie ja einzeln abgesetzt, was z.B. auch zu Schwierigkeiten bei gebundenen Statements und Abfrage des LastInsert-Wertes führen kann.

              Harzliche Grüße aus http://www.annerschbarrich.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
            2. 你好 Andreas,

              Das geht nur mit der mysqli-Extension, und dort aus Sicherheitsgründen
              auch nur mit mysqli_multi_query().

              Nein, das geht auch so mit mysql_query(), man muss nur den richtigen Flag
              setzen.

              再见,
               CK

              --
              Sein oder nicht sein, das ist hier die Frage!
              http://wwwtech.de/
              1. Hi Christian!

                Das geht nur mit der mysqli-Extension, und dort aus Sicherheitsgründen
                auch nur mit mysqli_multi_query().

                Nein, das geht auch so mit mysql_query(), man muss nur den richtigen Flag
                setzen.

                Meinst Du die PHP-Funktion - also mysqli_query()? Keine Ahnung, ich habe bisher selber noch nicht mit sowas gearbeitet. Ich habe nur unter http://www.php.net/manual/en/function.mysqli-real-connect.php folgendes gelesen:

                Note:  For security reasons the MULTI_STATEMENT flag is not supported in PHP. If you want to execute multiple queries use the mysqli_multi_query() function.

                Finde ich auch sehr vernünftig - ehrlich gesagt. Vermutlich ist das eine bewußte Abweichung von der C-API.

                Grüße
                Andreas

                --
                SELFHTML Feature Artikel: http://aktuell.de.selfhtml.org/artikel/
                1. 你好 Andreas,

                  Meinst Du die PHP-Funktion - also mysqli_query()?

                  Aeh, nein, ich meinte natuerlich die mysql_connect(), sorry. Der kann
                  man ja auch Flags mitgeben, auch wenn die nicht in den Namespace von PHP
                  importiert werden.

                  Note:  For security reasons the MULTI_STATEMENT flag is not supported in
                  PHP. If you want to execute multiple queries use the mysqli_multi_query()
                  function.

                  Das ist Quatsch. Es wird nur das Symbol nicht in den Namespace exportiert,
                  mehr nicht.

                  再见,
                   CK

                  --
                  lim(3->4)(sqrt(3)) = 2
                  http://wwwtech.de/
      2. Hello,

        Hallo

        Das ist problemlos möglich, indem die einzelnen Anweisungen durch Semikolon getrennt werden

        Nein, das ist in PHP (aus gutem Grund) nicht möglich.

        Liegt das an PHP?
        Ich kenne keine Möglichkeit, mit der es bei __MySQL__ möglich wäre.
        Andere DBMS können das auch mit PHP.

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Hi

          Liegt das an PHP?

          Soweit ich weiß ja.
          Ansonsten wäre es zu einfach, fremde Datenbanken zu manipulieren.

          Gruß,
          Maddin

  4. 你好 ichen,

    kann ich in einem mysql_query(); mehrere anweisungen an eine
    mysqldatenbank versenden?

    Wenn MySQL 4.1 benutzt wird: prinzipiell ja, du musst mysql_connect() nur
    den richtigen Flag mitgeben. Alles < MySQL 4.1: nein, geht nicht.

    zum beistpiel 3 inserts.

    Das geht mit mehrfachen Werte-Listen. Aus

    http://dev.mysql.com/doc/mysql/en/insert-speed.html:

    You can use the following methods to speed up inserts:

    * If you are inserting many rows from the same client at the same time, use INSERT statements with multiple VALUES lists to insert several rows at a time. This is much faster (many times faster in some cases) than using separate single-row INSERT statements. If you are adding data to a non-empty table, you may tune the bulk_insert_buffer_size variable to make it even faster. See Section 5.2.3, “Server System Variables”.

    再见,
     CK

    --
    Beware Evildoers for my deed is done and every little damsel in distress will be shelted!
    http://wwwtech.de/