PHP MYSQL von 5.x auf 7.2 übersetzen

  • Moin Moin,


    aktuell verzweifle ich daran eine kleine Funktion in PHP 7.2 zu übersetzen. Die letzten Wochen habe ich die Internetseite der Firma für die ich arbeite aktualisiert. Da wir für den PHP 5.x Support ganz ordentlich zahlen dürfen, habe ich auf PHP 7.2 umgestellt. Beim Sortiment stoße ich aber gerade an meine Grenzen. Ich hab mich damit jetzt schon etliche Stunden damit auseinandergesetzt und festgestellt, dass ich erst mal wieder von der Pike an lernen müsste wie man es macht. Das geht aktuell aber gar nicht klar zeitlich. Trotzdem brauche ich das schnell wieder am laufen. Könnt ihr mir bitte dabei helfen? (Ich weiß auch, dass Tabellen nicht mehr dem aktuellen Standard entsprechen, das soll mir aber für jetzt egal sein. Hauptsache das funktioniert erst mal wieder. Nach eleganten Lösungen kann ich gucken wenn das erst mal wieder funktioniert... Auf dem Rest der Seite findet man auch keine Tabellen mehr.) Vielen Dank im Voraus!



    http://www.lehei.de/azalea.php



    <?php

    include ("dbconnect.php");


    //SQL

    $res=mysql_query("select * from sorten WHERE gattung = 'Azalea' ORDER by sorte ASC");

    //Anzahl Spalten der Tabelle


    $SPALTEN = 4;

    $num=0;

    echo "<table width=\"990\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n </tr>\n";


    while($erg=@mysql_fetch_assoc($res))

    {

    //Sorten auflisten

    $restmp=mysql_query("select sid,bild from sorten where gattung = 'Azalea' ORDER by sorte ASC");

    $ergtmp=mysql_fetch_assoc($restmp);


    if (empty($ergtmp[bild]))

    $ergtmp[bild]="prod_img/folgt.jpg";

    if ($num % $SPALTEN == 0)// Neue Zeile beginnen

    echo " </tr>\n </tr>\n";


    echo "


    <td width='245' align='center' valign='center'>

    <a href='artikel-detail_EN.php?id=$erg[sid]'>

    <img class='rahmen-1' src='prod_img/$erg[bild]' border='0' width='225' height='225' alt='$erg[sorte]'>

    <br> <br />

    <strong>$erg[sorte]</strong>

    </a>

    <br><br><br>

    </td>\n";


    $num++;


    }



    // Die Tabelle könnte noch unvollständig sein.

    // D.h.: Wir haben 3 Spalten in der aktuellen zeile aber nur 2

    // Einträge. Das wird hier gefixt.


    if ($num % $SPALTEN != 0) {

    echo " <td colspan = \"". ($num % $SPALTEN) ."\">&nbsp;</td>\n";

    }


    echo " </tr>\n";

    echo "</table>";

    ?>




    ///////////////////////// dbconnect.php ///////////////////////////



    <?php


    $host = 'dbxxxxxxxxx.db.1and1.com';

    $user = 'dboxxxxxxxxxx';

    $pass = 'xxxxxxxxx';

    $name = 'dbxxxxxxxxxxx';

    $charset = 'utf8'; // Zeichencodierung

    $mysqli = mysqli_connect($host, $user, $pass, $name);


    if (!$mysqli) { // die Funktion mysqli_connect gibt im Fehlerfall FALSE zurück

    // beim Verbindungsaufbau ist ein Fehler aufgetreten!

    // mysqli_connect_error() stellt eine Fehlerbeschreibung bereit

    }


    if (!mysqli_set_charset($mysqli, $charset)) {

    // beim Setzen der Zeichencodierung ist ein Fehler aufgetreten!

    // mysqli_error($mysqli) stellt eine Fehlerbeschreibung bereit

    }


    ?>

  • das wichtigste bei php 7 ist das , das mysql nicht mehr laufen tut. Du must den in mysqli ändern.

    Da ist meistens nicht viel arbeit. bei einigen sachen muss nurdas i dazu geschrieben werden und bei anderen sachen muss man es leicht ab ändern.

    Hier sind schon mal paar änderungen drinne

    https://werner-zenk.de/tipps/u…ktion_mysql_zu_mysqli.php


    wenn du das alles gemacht hast dann meld dich wieder wenn es nicht geht

  • Besten Dank Basti, hat mir echt weitergeholfen.


    Ich habe da lediglich diesen kleinen Teil der Abfrage geändert und es funzt:



    $mysqli = mysqli_connect("xxxxxx", "xxxxx", "xxxxx", "xxxxx");


    $res=mysqli_query($mysqli, "select * from sorten WHERE gattung = 'Azalea' ORDER by sorte ASC");

    //Anzahl Spalten der Tabelle

    $SPALTEN = 4;

    $num=0;

    echo "<table width=\"990\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n </tr>\n";

    while($erg=mysqli_fetch_array($res))

    {

    //Sorten auflisten

    $restmp=mysqli_query($mysqli, "select sid,bild from sorten where gattung = 'Azalea' ORDER by sorte ASC");

    $ergtmp=mysqli_fetch_array($restmp);

    if (empty($ergtmp[bild]))

    $ergtmp[bild]="prod_img/folgt.jpg";


    Bei meinen vorherigen Versuchen hat immer die dbconnect am Anfang der Query gefehlt, ich denke das war das Hauptproblem:

    $res=mysqli_query($mysqli, "select * from sorten WHERE gattung = 'Azalea' ORDER by sorte ASC");


    Ich dachte mir ich stell das hier mal im Detail rein für alle anderen Hilfesuchenden...

  • Ich dachte mir ich stell das hier mal im Detail rein für alle anderen Hilfesuchenden...

    Ich kann nur hoffen, dass kein Hilfesuchender dieses Script als Vorlage nimmt!


    • Select *
    • Abfragen auf die gleiche Tabelle innerhalb einer Schleife
    • Keinerlei Fehlerüberprüfungen
    • Variablen in Großbuchstaben
    • Indizes von Arrays ohne Anführungszeichen

    Einfach nur grausam!