Umstellung von der PHP-Funktion mysql() zu mysqli()
Zur Zeit stellen viele Provider auf PHP 7 um, mit dieser neuen PHP-Version werden viele alte
Scripte
nicht mehr laufen die auf eine Datenbank zugegriffen haben.
Konkret funktioniert die Funktion: mysql()
nicht mehr, diese wurde durch mysqli()
ersetzt.
Hier zeige ich anhand von Beispielen wie Sie Ihre Scripte auf die neue Funktion umstellen können.
Als erstes fällt hier die Ähnlichkeit der Funktionen auf: mysql()
/ mysqli()
.
Viele Funktionen lassen sich dadurch ändern indem man einfach ein i im Namen mysql()
hinzufügt.
Verbindungskennung
Einige mysqli()
-Funktionen benötigen eine Verbindungskennung, das ist eine PHP-Variable die bei der
Verbindung zur Datenbank erzeugt wird, hier in diesen Beispielen heißt diese: $link
.
<?php
// mysql() Verbindung herstellen:
mysql_connect("localhost", "root", "", "test");
// mysqli() Verbindung herstellen:
$link = mysqli_connect("localhost", "root", "", "test");
?>
Auslesen von Daten aus der DB-Tabelle
<?php
$link = mysqli_connect("localhost", "root", "", "test");
// Datensätze auslesen (Beispiel)
$datensaetze = mysqli_query($link,
"SELECT `name`, `text`, `datum` FROM `nachrichten`");
// Datensätze ausgeben
while (list($name, $text, $datum) = mysqli_fetch_array($datensaetze)) {
echo "<p>$name - $titel - $text - $datum</p>";
}
?>
Die Funktion: mysqli_query()
benötigt eine Verbindungskennung, die Funktion: mysqli_fetch_array()
jedoch keine!
Folgende Funktionen benötigen eine Verbindungskennung:
mysqli_query() (Link zu php.net) mysqli_set_charset() mysqli_real_escape_string() mysqli_insert_id() ...
Welche Funktionen Sie nun ändern müssen hängt von Ihrem PHP-Script ab, Sie sollten erst auf php.net nachschauen welche Parameter die Funktionen benötigen.
Daten von einem Formular in die DB-Tabelle einfügen
Damit keine schadhaften Daten vom Formular in die DB-Tabelle gelangen benutzt man die sperrige Funktion mysqli_real_escape_string()
.
In vielen alten
PHP-Scripten wurde diese Funktion (mysql_real_escape_string()
) einfach zwischen den Query-String eingefügt.
<?php
if (isset($_POST["name"])) {
$link = mysqli_connect("localhost", "root", "", "test");
mysqli_query($link, "INSERT INTO `nachrichten` (name) VALUES ('" .
mysqli_real_escape_string($link, $_POST["name"]) . "')");
}
?>
<form method="post">
<label>Name: <input type="text" name="name"></label>
<input type="submit" value="Absenden">
</form>
Fazit
Die Umstellung auf die neue mysqli()
-Funktion ist nicht ganz einfach aber durchaus machbar.
Bleibt nur noch die Frage warum man nicht bei der mysql()
-Funktion geblieben ist?
Die Verbindungskennung war in der alten Funktion optional jetzt muss diese angegeben werden. Außerdem wurden u.a.
Prepared Statements hinzugefügt
die das eintragen in die DB-Tabelle sicherer machen.
Tipps
- RSS-Feed selbst erstellen
- Ein RSS-Feed lässt sich, mit wenigen Codezeilen, einfach selbst erstellen. Diese stellen in erster Linie ein vorzügliches Instrument dar, den Bekanntheitsgrad einer Website zu steigern.
- Zeichenkodierung - Schriftzeichen richtig darstellen
- Oft werden Umlaute, Akzentzeichen oder andere fehlerhafte Zeichen auf der Webseite angezeigt. Auch der Inhalt einer E-Mail, vom Kontaktformular der Website, kann falsche Umlautzeichen enthalten. Beispiele um diese Zeichen in der richtigen Zeichenkodierung darzustellen.
- Bilder in den Browser laden per File API
- Wenn Bilder hoch geladen werden sollen, ist es für dem Benutzer wissenswert welche Bilder er überhaupt ausgewählt hat. Diese JavaScript-Funktion zeigt Bilder vor dem hochladen im Browser an.
- Verkettete Auswahllisten dynamisch aus einer DB-Tabelle generieren
- Dieses Beispiel zeigt, wie man eine HTML-Auswahlliste (Drop-Down-Liste) dynamisch generiert, die auf den Werten einer Spalte in einer Datenbank-Tabelle beruht.
Abonniere meinen RSS-Feed
um über aktuelle Seiten benachrichtigt zu werden.
Fotoalbum Wasserzeichen Blätterfunktion Formular Generator ASCII JSON Metadaten Quelltext Mehrfachauswahl Stoppwortliste Veranstaltungsliste CSRF-Token Blend-Mode Mauszeiger Chatroom Metall-Effekt Generator Zeitfunktionen Zeichenkodierung Zeitansage PHP-Fehlermeldungen Audio-Player EVA-Prinzip AES Inhaltsverzeichnis Animation