Lösungen für das veraltete Mysql_connect in PHP
-
Verbinden Sie sich mit MySQL mit der Prozedur
Mysqli_connect
- Verbindung zu MySQL mit objektorientierter Programmierung
- Verbinden Sie sich mit MySQL über PDO
In diesem Artikel lernen Sie die Lösungen für das veraltete mysql_connect
in PHP kennen. Zu diesen Lösungen gehören mysqli_connect
(prozedural und OOP) und PHP Data Objects (PDO).
Verbinden Sie sich mit MySQL mit der Prozedur Mysqli_connect
mysqli_connect
ermöglicht Ihnen die prozedurale Programmierung, um sich mit Ihrer MySQL-Datenbank zu verbinden. Als Ergebnis können Sie den folgenden Algorithmus verwenden:
-
Definieren Sie die Details der Datenbankverbindung.
-
Verbinden Sie sich mit
mysqli_connect
. -
Wenn eine erfolgreiche Verbindung besteht, zeigen Sie eine Erfolgsmeldung an.
-
Bei einer fehlgeschlagenen Verbindung wird eine Fehlermeldung angezeigt.
Dieser Algorithmus funktioniert einwandfrei, bis in Schritt 2 ein Fehler auftritt. Ein solcher Fehler könnte ein falsches Datenbankdetail sein.
Wenn PHP auf diese falschen Details stößt, wird eine Fatal Error
-Ausnahme ausgelöst. Daher gelangt der Code nicht zu Schritt 3 oder Schritt 4, wo Sie eine Fehlermeldung anzeigen.
Um dies zu beheben, müssen wir die MySQL-Fehlerberichterstattung ausschalten und Warnungen unterdrücken. Auf diese Weise verhindern Sie, dass der Benutzer sensible Details sieht, wenn ein Fehler auftritt, und gleichzeitig können Sie eine benutzerdefinierte Fehlermeldung anzeigen.
Das Folgende ist der modifizierte Algorithmus:
-
Definieren Sie die Details der Datenbankverbindung.
-
Deaktivieren Sie die MySQL-Fehlerberichterstattung.
-
Mit
mysqli_connect
verbinden und Warnungen unterdrücken. -
Wenn eine erfolgreiche Verbindung besteht, zeigen Sie eine Erfolgsmeldung an.
-
Bei einer fehlgeschlagenen Verbindung wird eine Fehlermeldung angezeigt.
Das Folgende ist die Implementierung dieses Algorithmus:
<?php
// The following are the defaults for a
// new MySQL installation. You should replace
// the $host, $mysql_user, and $mysql_user_password
// with your details.
$host = 'localhost';
$mysql_user = 'root';
$mysql_user_passowrd = '';
// Turn off error reports like "Fatal Errors".
// Such reports can contain too much sensitive
// information that no one should see. Also,
// turning off error reports allows us to handle
// connection error in an if/else statement.
mysqli_report(MYSQLI_REPORT_OFF);
// If there is an error in the connection string,
// PHP will produce a Warning message. For security
// and private reasons, it's best to suppress the
// warnings using the '@' sign
$connect_to_mysql = @mysqli_connect($host, $mysql_user, $mysql_user_passowrd);
if (!$connect_to_mysql) {
echo "<b style='color: red;'>Failed to connect to MySQL.</b>";
} else {
echo "You've made a successful connection to MySQL.";
}
?>
Ausgabe bei erfolgreicher Verbindung:
You've made a successful connection to MySQL.
Ausgabe bei fehlgeschlagener Verbindung:
<b style='color: red;'>Failed to connect to MySQL.</b>
Verbindung zu MySQL mit objektorientierter Programmierung
Mit OOP und mysqli_connect
können Sie mit new mysqli()
eine Datenbankverbindung herstellen. Wie bei der prozeduralen Technik müssen Sie die Verbindungsdetails an new mysqli()
übergeben.
Sie können jedoch Fehler in diesen Details haben, daher verwenden wir einen try...catch
-Block zur Fehlerbehandlung. Zuerst platzieren wir die Verbindungsdetails im try
-Block, und wenn ein Fehler auftritt, fangen wir sie im catch
-Block ab.
Im Folgenden verwendet die Verbindung zu MySQL die OOP-Version von mysqli_connect
. Sie werden auch feststellen, dass wir Fehler in der Verbindungszeichenfolge unterdrückt haben.
<?php
// The following are the defaults for a
// new MySQL installation. You should replace
// the $host, $mysql_user, and $mysql_user_password
// with your details.
$host = 'localhost';
$mysql_user = 'root';
$mysql_user_passowrd = '';
try {
// Connect to the database using the OOP style
// of mysqli.
$connection_string = @new mysqli($host, $mysql_user, $mysql_user_passowrd);
echo "You've made a successful connection to MySQL.";
} catch (Exception $e) {
// If an error occurs, access the getMessage()
// method of the $e object. This gives information
// on why the error occurred.
echo "<b style='color: red;'>Failed to connect to MySQL :</b> " . $e->getMessage();
}
?>
Ausgabe bei erfolgreicher Verbindung:
You've made a successful connection to MySQL.
Ausgabe bei fehlgeschlagener Verbindung:
<b style='color: red;'>Failed to connect to MySQL :</b> Access denied for user ''@'localhost' (using password: NO)
Verbinden Sie sich mit MySQL über PDO
Sie können sich mit PDO mit MySQL verbinden, und Sie sollten Fehler mit einem try... catch
-Block abfangen. Letzteres funktioniert genauso, wie Sie es im OOP-Abschnitt gelernt haben.
Darüber hinaus sieht Ihr Benutzer keine sensiblen Fehlermeldungen, wenn ein Fehler auftritt. Nun, das Folgende ist die PDO-Version für die Verbindung zu MySQL:
<?php
// The following are the defaults for a
// new MySQL installation. You should replace
// the $host, $mysql_user, and $mysql_user_password
// with your details.
$host = 'localhost';
$mysql_user = 'root';
$mysql_user_passowrd = '';
try {
// Connect to MySQL using PDO and set PDO
// error mode to exception.
$connection_string = @new PDO("mysql:host=$host", $mysql_user, $mysql_user_passowrd);
$connection_string->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "You've made a successful connection to MySQL.";
} catch (PDOException $e) {
// If an error occurs, access the getMessage()
// method of the $e object. This gives information
// on why the error occurred.
echo "<b style='color: red;'>Failed to connect to MySQL:</b> " . $e->getMessage();
}
?>
Ausgabe bei erfolgreicher Verbindung:
You've made a successful connection to MySQL.
Ausgabe bei fehlgeschlagener Verbindung:
Failed to connect to MySQL: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)
Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.
LinkedIn