PHP Script ändern damit mysqli / PHP 7.2 funktioniert

cliodriver

Mitglied
Hallo

das ist seit langem wieder mal eine Frage / Bitte um Hilfe zu einem PHP-Script.

Ich habe vor einem Jahr eine Homepage für eine Bekannte (Ferienwohnungen) erstellt und ein fertiges Script für einen Belegungskalender eingebaut und dabei nicht bedacht / gewusst das der Server demnächst auf PHP 7.2 umstellt. Ich konnte schon testen und den Rest der Homepage anpassen, doch leider bin ich mit meinem Latein am ende und der Kalender funktioniert natürlich nicht.

Das Problem liegt natürlich an der Datenbankverbindung .... mysqli unter PHP 7.2, welche ich nicht gefixt bekomme

Meine Frage dazu:

Kann sich jemand den Code mal ansehen und sagen er sich anpassen lässt bzw. hätte gleich Tipps für mich? Ich würde gerne verstehen wo der Hund begraben liegt und es selber ändern, doch ohne Hilfe komm ich grad nicht weiter.

Weiters umfasst das ganze ca. 19 Seiten und wenn ich die alle hier poste, wird's wahrscheinlich unübersichtlich. Ich würde das Paket per email versenden wenn ich Hilfe bekomme.

Danke
 
Lösung
So habe mir das mal angeschaut.

Es ist nur die db.class.php anzupassen.

PHP:
<?php
// Class for database connection
class DatabaseConnection {

    public    $error = false;
    public    $version = false;
    private    $link = false;
    private $config = array ();

    /**
     * Wrapper for connect ()
     * @param    $db        Array with vars from config
     * @return            result from connect ()
     */
    public function databaseConnection ($mysql) {
        $this->config = $mysql;
        return $this->connect ();
    }

    /**
     * Tries to connect to db and checks installation.
     * @return            true if no error, else false
     */
    public function connect () {
        // Reset $error
        $this->error...
Warning: Undefined array key "pfix" in /volume3/web/php8test/includes/db.class.php on line 298
Das zeugt von einer schlampigen Programmierung, sollte aber recht leicht korrigiert werden können

Fatal error: Uncaught Error: Call to undefined function mysql_query() in /volume3/web/php8test/includes/db.class.php:133
Hast du die erste Version von db.class.php genommen? Es gibt doch schon eine korrigierte Version, die auch mit PHP 8 funktionieren sollte.
 
Das zeugt von einer schlampigen Programmierung, sollte aber recht leicht korrigiert werden können
Das konnte ich schon beheben. ChatGPT sagte mir:
PHP:
// Ändern Sie diese Zeile:
private $config = array ();
// in diese Zeile:
private $config = array('pfix' => '');

Hast du die erste Version von db.class.php genommen? Es gibt doch schon eine korrigierte Version, die auch mit PHP 8 funktionieren sollte.
Das Skript stammt vom Input von @lynx1974
Aber danke für den Hinweis. Ich werde mir die anderen Posts mal angucken.
 
Code:
Fatal error:
Uncaught TypeError: mysqli_query(): Argument #1 ($mysql) must be of type mysqli, bool given in /volume3/web/php8test/includes/db.class.php:127
Stack trace:
#0 /volume3/web/php8test/includes/db.class.php(127): mysqli_query(false, 'SELECT * FROM `...')
#1 /volume3/web/php8test/includes/functions.inc.php(107): DatabaseConnection->select('SELECT * FROM `...')
#2 /volume3/web/php8test/includes/ini.inc.php(91): readPrefs(Object(DatabaseConnection))
#3 /volume3/web/php8test/index.php(13): require_once('/volume3/web/ph...')
#4 {main} thrown in /volume3/web/php8test/includes/db.class.php on line 127
 
Zeile 127 wäre
PHP:
$result = mysqli_query($this -> link,$query);
Daraus lässt sich schließen, dass
PHP:
$this->link = @mysqli_connect($this->config['host'] . ':' . $this->config['port'], $this->config['user'], $this->config['pass']);
in die Hose geht.

Stimmen die Zugangsdaten? Und lohnt es sich wirklich, ein Script aus 2018 zu reparieren? Wer weiß, was da noch für Fehler schlummern.
 
Trage mal direkt nach
PHP:
$this->link = @mysqli_connect($this->config['host'] . ':' . $this->config['port'], $this->config['user'], $this->config['pass']);
dies hier ein:
PHP:
if (! $this->link)
{
    echo "Connection failed, Config:<br><pre>\n";
    var_dump($this->config);
    die("</pre>");
}
 
Zurück