Mickymaus: mysqli Fragen

Servus,
mal wieder eine mysqli Frage von mir!

Wenn man mit $mysqli->multi_query($Query); eine multi_query ausführt, kann man dann mit $mysql->error auf eventuell auftretende Fehler zugreifen, wie es bei der normalen query der Fall ist? Also einfach if(!$Result) { echo $mysqli->error; } ?

Dankeschön!

  1. Moin,

    Wenn man mit $mysqli->multi_query($Query); eine multi_query ausführt, kann man dann mit $mysql->error auf eventuell auftretende Fehler zugreifen, wie es bei der normalen query der Fall ist? Also einfach if(!$Result) { echo $mysqli->error; } ?

    Probier es doch aus. Theoretisch sollte das funktionieren, wenn ich die Doku richtig verstanden habe: mysqli->error() liefert die letzte Fehlermeldung, für die letzte Mysqli-Anweisung.

    Grüße Marco

    1. Moin,

      Wenn man mit $mysqli->multi_query($Query); eine multi_query ausführt, kann man dann mit $mysql->error auf eventuell auftretende Fehler zugreifen, wie es bei der normalen query der Fall ist? Also einfach if(!$Result) { echo $mysqli->error; } ?

      Probier es doch aus. Theoretisch sollte das funktionieren, wenn ich die Doku richtig verstanden habe: mysqli->error() liefert die letzte Fehlermeldung, für die letzte Mysqli-Anweisung.

      Grüße Marco

      Nun, ich habe es ja hiermit probiert:

      <?php

      $test = new mysqli("localhost","root","","test");
      $test->query("SELECT gibtsnicht FROM gibtsauchnicht WHERE id = 4");
      echo $test->error;
      echo "<br><br>";
      $test->multi_query("SELECT gibtsnicht FROM gibtsauchnicht WHERE id = 4;SELECT gibtsnicht2 FROM gibtsauchnicht3 WHERE test = 4");
      echo $test->error;

      ?>

      Allerdings, funktioniert das nur eingeschränkt. Klar, beim ersten gibts mir den richtigen Fehlernamen aus, allerdings sollte es doch beim zweiten also bei der Multi_query 2mal eine Fehlermeldung ausgeben oder verstehe ich das falsch? In dem Fall sollte einmal ausgegeben werden, dass es gibtsnicht in gibtsauchnicht nicht gibt und gibtsnicht2 in gibtsauchnicht3 nicht vorhanden ist. Auch ein while($test->next_result()) hat hier nichts gebracht, um über results drüberzugehen, da ja keine results vorhanden sind.

      Was mache ich falsch?

      1. Tach!

        $test->multi_query("SELECT gibtsnicht FROM gibtsauchnicht WHERE id = 4;SELECT gibtsnicht2 FROM gibtsauchnicht3 WHERE test = 4");
        echo $test->error;
        Allerdings, funktioniert das nur eingeschränkt. Klar, beim ersten gibts mir den richtigen Fehlernamen aus, allerdings sollte es doch beim zweiten also bei der Multi_query 2mal eine Fehlermeldung ausgeben oder verstehe ich das falsch?

        Warum sollte es das? Steht das so in der Funktionsbeschreibung?

        In dem Fall sollte einmal ausgegeben werden, dass es gibtsnicht in gibtsauchnicht nicht gibt und gibtsnicht2 in gibtsauchnicht3 nicht vorhanden ist.

        Und wie sollte deiner Meinung nach das echo zweimal ausgeführt werden? Oder sollen alle Meldungen der unterschiedlichsten Fehlernummern in einen String (und die Nummern in eine "Multi-Zahl") gepackt werden?

        Auch ein while($test->next_result()) hat hier nichts gebracht, um über results drüberzugehen, da ja keine results vorhanden sind.

        Nun, so stehts aber im Handbuch. Das kann bedeuten, dass du was falsch gemacht oder einen Bug gefunden hast.

        dedlfix.

  2. hi,

    Wenn man mit $mysqli->multi_query($Query); eine multi_query ausführt, kann man dann mit $mysql->error

    Guck mal:
    Returns FALSE if the first statement failed. To retrieve subsequent errors from other statements you have to call mysqli_next_result() first.

    Das ist genau das, was die multi_query interessant macht.

    Hotti