Ankündigung

Einklappen
Keine Ankündigung bisher.

php script generiert beim zweiten Mal einen SQL Error

Einklappen

Neue Werbung 2019

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

  • php script generiert beim zweiten Mal einen SQL Error

    Hallo miteinander,

    ich habe das Problem, dass wenn ich diesen Code ein zweites Mal auf der Page ausführen lasse, es mir diesen Error generiert:
    Warning: mysqli_query() [function.mysqli-query]: Couldn't fetch mysqli in C:\Inetpub\vhosts\iarc.ch\httpdocs\Index.php on line 489

    Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\Inetpub\vhosts\iarc.ch\httpdocs\Index.php on line 489

    Das hier ist der Code den ich geschrieben habe, das komische ist, dass er das erste Mal korrekt ausgeführt wird.

    <?php
    require_once "to_mysql.php";

    // Query siteartefacts
    $sqlCommand = "SELECT Question FROM Uquestion";
    $query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error());
    // ------------------------------------------------------------------------------

    // create the table of Artefacts and fill it with the DB content
    if($query){
    echo '<table style="width: 800px; height: 60px; text-align: left; margin-left: auto; margin-right: auto;" border="1" cellpadding="2" cellspacing="2">
    <tbody>';
    while($row = mysqli_fetch_array($query)){
    echo '<tr align="left"><td align="left">' .
    $row['Question'] . '</td><td align="left">';
    echo '</tr>';
    }
    echo '</tbody></table>';
    } else {
    echo "Couldn't issue database query<br />";
    echo mysqli_error($myConnection);
    }
    mysqli_close($myConnection);
    ?>


  • #2
    Hallo!

    Bitte PHP-Codes in den Code-Tags angeben.

    mysqli_error() braucht die connection als Parameter: http://php.net/manual/de/mysqli.error.php

    wenn ich diesen Code ein zweites Mal auf der Page ausführen lasse, es mir diesen Error generiert:
    Was genau hast du zwei mal im Code (alles?!), man kann nicht einfach irgendwas so nochmals reinkleistern. Du musst den Ablauf und Zuweisungen beachten.

    Zeig mal..
    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Hallo,
      ich habe diesen Code zweimal drinne auf einer Page. Danke für die rasche Antwort! ... das erste Mal funktioniert dieser PHP code-block ohne Problem und das zweite Mal generiert es dann diesen mysqli error

      PHP-Code:
      <?php
      require_once "to_mysql.php";

      // Query siteartefacts
      $sqlCommand "SELECT Question FROM Uquestion";
      $query mysqli_query($myConnection$sqlCommand) or die (mysqli_error());
      // ------------------------------------------------------------------------------

      // create the table of Artefacts and fill it with the DB content
      if($query){
      echo 
      '<table style="width: 800px; height: 60px; text-align: left; margin-left: auto; margin-right: auto;" border="1" cellpadding="2" cellspacing="2">
      <tbody>'
      ;
      while(
      $row mysqli_fetch_array($query)){
      echo 
      '<tr align="left"><td align="left">' .
      $row['Question'] . '</td><td align="left">';
      echo 
      '</tr>';
      }
      echo 
      '</tbody></table>';
      } else {
      echo 
      "Couldn't issue database query<br />";
      echo 
      mysqli_error($myConnection);
      }
      mysqli_close($myConnection);
      ?>

      Kommentar


      • #4
        require_once includiert die Datei nur einmal. Daher steht beim zweiten Mal wahrscheinlich nicht die Variable mit deiner datenbankverbindung zur verfügung
        liebe Grüße
        Fräulein Dingsda

        Kommentar


        • #5
          Genau so wird es sein, da du diese explizit schliesst:

          PHP-Code:
          require_once "to_mysql.php"
          // ...
          mysqli_close($myConnection); 
          Entferne das mal. Das ist übrigens meistens auch gar nicht nötig, darum kümmert sich der Garbage Collector von PHP.
          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Hallo Hausl und Dingsda,

            herzlichen Dank!!! Mein Gott bin ich froh, es funktioniert jetzte... ich habe auf dieser Seite mehrere so Tabellen und Variablen, die ich von der SQL hole...

            was soll ich brauchen oder wann braucht man wie was von require, require_once, include oder include_once?

            Grüsse Euch

            Kommentar


            • #7
              Der Unterschied zwischen include ("einbinden") und require ("benötigen") ist, dass PHP beim include einfach weiter macht, wenn es die Datei nicht finden kann. Bei require setzt es die Datei wie der Befehl schon sagt strikt voraus, d.h. wenn es sie nicht findet, wird die komplette Ausgabe ohne Umstände abgebrochen. Mit [...]_once als Zusatz (z.B. include_once) wird die entsprechende Datei nur dann aufgerufen, wenn das noch nicht der Fall war. Hast du z.B. ein Array oder eine Funktion extern abgelegt, rufst diese aber mehrfach pro Seite per Include auf, z.B. auch innerhalb von IF-Abfragen, wird die Datei jedes Mal neu aufgerufen. Include_once macht das nur einmal, was meistens auch ausreicht. Im Grunde spart das Rechenzeit und -last. Abhängig von der Serverausstattung (und dem Umfang des Includes) sind das lediglich Mikrosekunden, aber bei mehreren Usern gleichzeitig addiert sich das schnell mal.
              Was man davon braucht? Man muss sich danach richten, ob man was auch immer in der externen Datei liegt nur einmal aufrufen muss, oder ob z.B. über die Datei Daten geladen werden, die aktualisiert werden müssen (also eine neue Einbindung in Frage käme). Require benutze ich für meinen Teil immer in Sachen Sicherheit. Wenn ich z.B. ein Script einbinde, das Nutzereingaben prüft. Passt was nichts, macht PHP auch nichts. Ist im End doch noch besser als später von Hand die Datenbank wieder aufzuräumen weil sonstwas fehlerhaft ausgeführt wurde.

              Kommentar


              • #8
                Grundsätziches steht auch ganz gut beschreiben in der Doku (sogar in deutsch )

                http://php.net/manual/de/function.include-once.php
                http://php.net/manual/de/function.require-once.php

                Was ev. dazu noch interessant wäre: PHP-Includes: Niemals ohne __DIR__

                LG
                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar

                Lädt...
                X