Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL auf MySQLi ändern

Einklappen

Neue Werbung 2019

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

  • MySQL auf MySQLi ändern

    Hallo zusammen!
    Ich bin neu hier, genauso neu wie in PHP.
    Ich habe früher in der Schule in zuge eines Projektes eine kleine Website mit anderen Schülern geschrieben. Ist jetzt 3 Jahre her und wollte mich mal wieder in PHP reinfuchsen. Ich habe aber gemerkt, dass es ab PHP 5.5 ein "neues" MySQL gibt mit dem i hinten dran. Jetzt versuche ich die ganze Zeit mine alten Dateien zu überarbeiten. Vielleicht könnt ihr mir dabei helfen?

    Hier mal mein script:
    PHP-Code:
    <?php
      $host_name  
    "name";
        
    $database   "name";
        
    $user_name  "name";
        
    $password   "name";

        
    $connect mysqli_connect($host_name$user_name$password$database);
        if (
    mysqli_connect_errno())
        {
        echo 
    "Verbindung zum MySQL Server fehlgeschlagen: " mysqli_connect_error();
        }
      
    mysqli_set_charset('utf8',$v); 
      
    $result mysqli_query($connect"SELECT datum, name, text FROM `bubbles` ORDER by `datum` DESC  LIMIT 50");

      while (
    $zeile mysqli_fetch_row($result)){
        echo 
    $zeile[0] . "  "$zeile[1]. "<br><b>"$zeile[2]. "</b><hr>";
      }
      
    mysqli_close($v);
    ?>


  • #2
    Wenn du mysqli_ prozedual verwendest, brauchst du als erstes Argument immer die Connection. Siehe auch Doku http://php.net/manual/de/mysqli.query.php ("prozeduale Variante").

    Übrigens, auch nach mysqli_query() darf mach nach Fehler fragen
    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
      Ok das heißt, als aller erstes sollte
      PHP-Code:
      $link mysqli_connect("localhost""my_user""my_password""world"); 
      stehen, richtig? Aber passt die "Umänderung" sonst so?

      Kommentar


      • #4
        Aber passt die "Umänderung" sonst so?
        ?

        1. Bitte schau in die Doku für die korrekte Notation Funktionssignatur, http://php.net/manual/de/mysqli.construct.php
        2. error_repoting hochdrehen
        3. Funktioniert es dann oder gibt es Fehlermeldungen, wenn ja welche?
        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


        • #5
          Ich habe zur Zeit keine Fehlermeldungen. Zur Verständnis, es ist eine Seite, wo man einen Text schreibt und ihn dann postet. Nur leider, wenn ich auf abschicken klicke, dann erscheint kein Text. Ich denke, dass ist alles etwas altmodisch gelöst. Das gesamte Layout ist in einer HTML Datei, der index Datei. Die arbeitet auch mit Javascript. Dann gibt es eine save.php und eine fill.php Datei. Save soll halt eben den Text speichern, wenn ich das richtig verstehe und fill befüllen. Ich geb hier einfach mal beide Scripte an. Ist bestimmt ein Fehler drinnen.

          fill.php:
          PHP-Code:
          <?php
          $connect 
          mysqli_connect('datenbank''username''passwort''datenbank');

          if (!
          $connect) {
              die(
          'Connect Error (' mysqli_connect_errno() . ') '
                      
          mysqli_connect_error());
          }
          mysqli_set_charset('utf8',$v); 
            
          $result mysqli_query($connect"SELECT datum, name, text FROM `bubbles` ORDER by `datum` DESC  LIMIT 50");
          while (
          $zeile mysqli_fetch_row($result)){
              echo 
          $zeile[0] . "  "$zeile[1]. "<br><b>"$zeile[2]. "</b><hr>";
            }

          mysqli_close($connect);
          ?>
          save.php:

          PHP-Code:
          <?php
          $connect 
          mysqli_connect('datenbank''username''passwort''datenbank');

          if (!
          $connect) {
              die(
          'Connect Error (' mysqli_connect_errno() . ') '
                      
          mysqli_connect_error());
          }
          $name $_POST[Vorname];
          $text $_POST[Text];
          $ip $_SERVER['REMOTE_ADDR'];

          mysqli_query($connect,"insert into bubbles (id, text, name, datum, ip) values (NULL, '$text', '$name',CURRENT_TIMESTAMP, '$ip');");
            

          mysqli_close($connect);
          header("Location: index.htm");
          ?>
          Wie gesagt, ich bin mir sicher, dass etwas falsch ist, da ich noch kleine Verständnis Probleme habe.

          Kommentar


          • #6
            Bitte dreh mal alles bzgl. Fehler auf, alleine das ist falsch
            PHP-Code:
            mysqli_set_charset('utf8',$v); 
            http://php.net/manual/de/mysqli.set-charset.php
            bool mysqli_set_charset ( mysqli $link , string $charset )

            Schreibe zu Beginn jedes Scriptes:

            PHP-Code:
            error_reporting(-1);
            ini_set('display_errors'1); 
            und vor jedem mysqli_connect() das:

            PHP-Code:
            mysqli_report(MYSQLI_REPORT_ERROR); 
            BTW: DB-Connection lagert man für gewöhnlich in einen Include aus und bindet das in jedes Script (wo benötigt) ein - zentral - DRY ("dont repeat yourself").
            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


            • #7
              Ok bekomme mal den Fehler hier: syntax error, unexpected 'mysqli_set_charset' (T_STRING)
              Habe es aber auch schon geändert in mysqli_set_charset.

              Kommentar


              • #8
                Zeig den Code davor, da kann zB davor ein ; fehlen, PHP erwartet an der Stelle was anderes.
                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


                • #9
                  Ja danke, das war der Fehler. Habe jetzt nur noch einen Fehler, wobei es trotzdem gepostet wird: Notice: Use of undefined constant Vorname - assumed 'Vorname'...
                  und
                  Notice: Use of undefined constant Text - assumed 'Text'

                  Kommentar


                  • #10
                    PHP-Code:
                    $name $_POST[Vorname]; 
                    $text $_POST[Text]; 
                    vs.
                    PHP-Code:
                    $name $_POST['Vorname']; 
                    $text $_POST['Text']; 
                    So richtig richtig wirds aber erst, wenn du auch noch sicherstellst, das überhaupt POST Daten vorhanden sind:
                    PHP-Code:
                    $name = isset($_POST['Vorname']) ? $_POST['Vorname'] : ''
                    $text = isset($_POST['Text']) ? $_POST['Text'] : ''
                    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                    Kommentar


                    • #11
                      Vieln vieln Dank! Es funktioniert jtzt!
                      Das einzige was mich noch interessiert ist, wie das $ip = $_SERVER['REMOTE_ADDR']; funktioniert? Das habe ich momentan rausgestrichen.

                      Kommentar


                      • #12
                        Kurz gesagt: Der Webserver trägt diese Information für PHP in das spezielle $_SERVER Array ein.

                        Für die lange Erklärung benutz Google oder schau hier: http://php.net/manual/de/reserved.variables.server.php
                        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                        Kommentar


                        • #13
                          Ok, danke!

                          Kommentar

                          Lädt...
                          X