PHP: Verbindung zu MySQL
Erfahren Sie, wie Sie sich von PHP aus mit MySQL unter Verwendung von MySQLi und PDO verbinden
👋 Willkommen in der Stackhero-Dokumentation!
Stackhero bietet eine einsatzbereite PHP-Cloud-Lösung, die zahlreiche Vorteile bietet, darunter:
- Deployen Sie Ihre Anwendung in Sekunden mit einem einfachen
git push.- Verwenden Sie Ihren eigenen Domainnamen und profitieren Sie von der automatischen Konfiguration von HTTPS-Zertifikaten für erhöhte Sicherheit.
- Genießen Sie beruhigende automatische Backups, Ein-Klick-Updates und eine einfache, transparente und vorhersehbare Preisgestaltung.
- Erhalten Sie optimale Performance und robuste Sicherheit dank einer privaten und dedizierten VM.
Sparen Sie Zeit und vereinfachen Sie Ihr Leben: Es dauert nur 5 Minuten, um die PHP-Cloud-Hosting-Lösung von Stackhero auszuprobieren!
Verbindung von PHP zu MySQL mit MySQLi (objektorientierter Stil)
Das folgende Beispiel zeigt, wie PHP mit MySQL unter Verwendung von MySQLi im objektorientierten Stil verbunden wird. Es ist bewährte Praxis, eine dedizierte Datenbank und einen Benutzer für Ihre Anwendung zu erstellen, anstatt das 'root'-Konto zu verwenden. Dieser Ansatz verbessert die Sicherheit Ihrer Anwendung.
<?php
$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // In der Produktion erstellen Sie eine dedizierte Datenbank und einen Benutzer in phpMyAdmin
$mysqli = mysqli_init();
$mysqliConnected = $mysqli->real_connect($hostname, $user, $password, $database, NULL, NULL, MYSQLI_CLIENT_SSL);
if (!$mysqliConnected) {
die('Verbindungsfehler: ' . $mysqli->connect_error);
}
echo 'Verbindung erfolgreich... ' . $mysqli->host_info . "\n";
$mysqli->close();
?>
Verbindung von PHP zu MySQL mit MySQLi (prozeduraler Stil)
Wenn Sie einen prozeduralen Ansatz bevorzugen, zeigt das folgende Beispiel, wie Sie eine Verbindung mit MySQLi im prozeduralen Stil herstellen. Wie immer wird empfohlen, eine dedizierte Datenbank und einen eingeschränkten Benutzer zu verwenden, um die Sicherheit zu erhöhen.
<?php
$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // Für erhöhte Sicherheit erstellen Sie eine dedizierte Datenbank und einen Benutzer in phpMyAdmin
$mysqli = mysqli_init();
$mysqliConnected = mysqli_real_connect($mysqli, $hostname, $user, $password, $database, NULL, NULL, MYSQLI_CLIENT_SSL);
if (!$mysqliConnected) {
die('Verbindungsfehler: ' . mysqli_connect_error($mysqli));
}
echo 'Erfolg: ' . mysqli_get_host_info($mysqli) . "\n";
mysqli_close($mysqli);
?>
Verbindung von PHP zu MySQL mit PDO
PDO bietet eine flexible Methode, um PHP mit MySQL zu verbinden. Das folgende Beispiel zeigt, wie PDO verwendet wird, um eine Verbindung herzustellen. Es behandelt auch potenzielle SSL-Zertifikatsprobleme, die auftreten können, wenn Ihr System keinen Zugriff auf CA-Zertifikate hat.
<?php
$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // Für Produktionsumgebungen sollten Sie eine dedizierte Datenbank und einen Benutzer erstellen
$dsn = "mysql:host=$hostname;dbname=$database";
$options = array(
// Wenn Sie einen Fehler wie "Uncaught PDOException: PDO::__construct(): SSL operation failed with code 1..." erhalten,
// könnte dies daran liegen, dass im Verzeichnis /etc/ssl/certs/ CA-Zertifikate fehlen
PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/',
// PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem',
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => true,
);
$pdo = new PDO($dsn, $user, $password, $options);
$stm = $pdo->query('SELECT VERSION()');
$version = $stm->fetch();
echo 'Sie sind mit einer Datenbank verbunden, die Version ' . $version[0] . "\n";
?>
Umgang mit dem Fehler "SSL operation failed with code 1"
Wenn Sie einen Fehler wie Uncaught PDOException: PDO::__construct(): SSL operation failed with code 1. OpenSSL Error messages: error:0A000086:SSL routines::certificate verify failed sehen, liegt es wahrscheinlich daran, dass das Verzeichnis /etc/ssl/certs/ Ihres Systems nicht die erforderlichen CA-Zertifikate enthält.
Wenn Sie Zugriff auf das System haben, das Ihren PHP-Code ausführt, können Sie die Zertifikate wie folgt installieren:
- Auf Ubuntu/Debian führen Sie
sudo apt-get install ca-certificatesaus - Auf Alpine Linux führen Sie
apk add ca-certificatesaus
Wenn Sie keinen direkten Zugriff haben, um diese Zertifikate auf Ihrem System zu installieren, können Sie das Zertifikat manuell installieren:
- Laden Sie das Zertifikat auf Ihren Computer herunter: https://letsencrypt.org/certs/isrgrootx1.pem
- Fügen Sie die Datei
isrgrootx1.pemzu Ihren PHP-Projektdateien hinzu. - Kommentieren Sie die Zeile
PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/'aus - Heben Sie die Kommentierung der Zeile
PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem'auf
Verbindung von PHP zu MySQL unter Verwendung von Anmeldeinformationen aus Umgebungsvariablen
Für erhöhte Sicherheit und einfachere Konfigurationsverwaltung wird empfohlen, Ihre Anmeldeinformationen nicht in Ihrem Quellcode zu hardcodieren. Stattdessen sollten Sie diese Einstellungen aus Umgebungsvariablen abrufen, wie unten gezeigt:
<?php
$hostname = getenv('STACKHERO_MYSQL_HOST');
$user = getenv('STACKHERO_MYSQL_USER');
$password = getenv('STACKHERO_MYSQL_PASSWORD');
$database = getenv('STACKHERO_MYSQL_USER'); // Üblicherweise entspricht der Datenbankname dem Benutzernamen
?>
Die Verwendung von Umgebungsvariablen hilft, die Sicherheit Ihrer Anmeldeinformationen zu wahren und macht Ihre Konfiguration anpassungsfähiger für verschiedene Umgebungen.