php update 5.5 -> 7 - сбой подключения к базе данных - PullRequest
0 голосов
/ 09 ноября 2018

Я не могу подключиться к базе данных после обновления до php 7. Я изменил mysql_ на mysqli_ и знаю, что нужны некоторые другие изменения, но они не должны касаться mysqli_connect. Я не новичок в php и mysql, но мне очень сложно понять эти классы и #globals.

основной файл insert.php (для вставки данных в таблицу)

<?php

// ToolBox-Klasse (tbox) einfuegen.
include("includes/tbox.class.php");
// Datenbank-Klasse (db) einfuegen.
include("includes/db.class.php");
// Neue Objekte der Klassen bilden.
$tbox = new TBox();
// ToolBox Objekt an die Datenbankklasse Uebergeben.
$db   = new Db($tbox);
// Datenbank-Werte in der Datenbank-Klasse setzen.
$db->db_host = "localhost";      // Host, über den man die Datenbank erreichen kann.
$db->db_user = "d00d6f3b";  // Benutzer, mit dem man die Verbindung zur Datenbank herstellen möchte.
$db->db_pass = "mypass";   // Passwort des Benutzer.
$db->db_name = "d00d6f3b";      // Datenbankname, wo sich die entsprechenden Tabellen befinden.

main();

// Hauptfunktion dieses Skripts.
function main () {
// Bufferung starten.
ob_start();
include("includes/header.php");
?>
...

the db.class.php

<?php
class Db {
public $sth;
	var $db_name;
	var $db_host;            
	var $db_user;               
	var $db_pass;           
	var $link_id;              // Resultat von mysqli_connect().
	var $query_id;             // Resultat von mysqli_query().
	var $record     = array(); // Letzter Record.	
	var $row        = 0;       // Aktuelle Ergebniszeile.
	var $num_rows   = "";      // Anzahl Zeilen der letzten Anfrage.
	var $num_fields = "";      // Anzahl Felder der letzten Anfrage.
	var $locked     = false;   // True, wenn Tabellen gelockt sind.
	var $class_tbox;           // Objekt der ToolBox-Klasse.
	// Konstruktor der Db Klasse.
	function Db ($class_tbox) {
		$this->class_tbox = $class_tbox;
	}
	// Connect zur Datenbank herstellen.
	function connect () {
		// Wenn wir keine gueltige Verbindungsid haben, versuchen wir neu zu verbinden.
		if (! is_resource($this->link_id)) {
			$this->link_id = @mysqli_connect($this->db_host, $this->db_user, $this->db_pass);

			if (! is_resource($this->link_id)) {
				$this->class_tbox->db_error(
                    "No connection to database."
                    );
					
					 $this->sth = $mysqli;
				}

			// Jetzt versuchen wir die richtige Datenbank auszuwaehlen.
			// Schlaegt das fehl, geben wir einen Fehler aus.
			if (! mysqli_select_db($this->db_name)) {
				$this->class_tbox->db_error(	
					sprintf("Die Datenbank [%s] konnte nicht ausgewählt werden.", 
                            $this->db_name),
					mysqli_error(),
					mysqli_errno()
				);
			}
		}
	}

	// Versucht die offene Verbindung zur Datenbank zu beenden.
	function close () {
        	@mysqli_close();
	}
  ...
  ?>
...