PHP: Verbinden met MySQL
Leer hoe u verbinding maakt met MySQL vanuit PHP met behulp van MySQLi en PDO
👋 Welkom bij de Stackhero-documentatie!
Stackhero biedt een kant-en-klare PHP cloud oplossing die tal van voordelen biedt, waaronder:
- Implementeer uw applicatie in seconden met een eenvoudige
git push.- Gebruik uw eigen domeinnaam en profiteer van de automatische configuratie van HTTPS-certificaten voor verbeterde beveiliging.
- Geniet van gemoedsrust met automatische back-ups, updates met één klik, en eenvoudige, transparante en voorspelbare prijzen.
- Krijg optimale prestaties en robuuste beveiliging dankzij een privé en dedicated VM.
Bespaar tijd en vereenvoudig uw leven: het kost slechts 5 minuten om de PHP cloud hosting oplossing van Stackhero te proberen!
PHP verbinden met MySQL met MySQLi (objectgeoriënteerde stijl)
Het volgende voorbeeld laat zien hoe u PHP met MySQL kunt verbinden met behulp van MySQLi in een objectgeoriënteerde stijl. Het is best practice om een speciale database en gebruiker voor uw applicatie te maken in plaats van het 'root'-account te gebruiken. Deze aanpak verbetert de beveiliging van uw applicatie.
<?php
$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // In productie, maak een speciale database en gebruiker aan in phpMyAdmin
$mysqli = mysqli_init();
$mysqliConnected = $mysqli->real_connect($hostname, $user, $password, $database, NULL, NULL, MYSQLI_CLIENT_SSL);
if (!$mysqliConnected) {
die('Verbindingsfout: ' . $mysqli->connect_error);
}
echo 'Verbinding succesvol... ' . $mysqli->host_info . "\n";
$mysqli->close();
?>
PHP verbinden met MySQL met MySQLi (procedurele stijl)
Als u de voorkeur geeft aan een procedurele aanpak, laat het onderstaande voorbeeld zien hoe u een verbinding kunt maken met MySQLi in een procedurele stijl. Zoals altijd wordt het aanbevolen om een speciale database en een beperkte gebruiker te gebruiken voor verbeterde beveiliging.
<?php
$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // Voor verbeterde beveiliging, maak een speciale database en gebruiker aan in phpMyAdmin
$mysqli = mysqli_init();
$mysqliConnected = mysqli_real_connect($mysqli, $hostname, $user, $password, $database, NULL, NULL, MYSQLI_CLIENT_SSL);
if (!$mysqliConnected) {
die('Verbindingsfout: ' . mysqli_connect_error($mysqli));
}
echo 'Succes: ' . mysqli_get_host_info($mysqli) . "\n";
mysqli_close($mysqli);
?>
PHP verbinden met MySQL met PDO
PDO biedt een flexibele methode om PHP met MySQL te verbinden. Het onderstaande voorbeeld illustreert hoe u PDO kunt gebruiken om een verbinding tot stand te brengen. Het behandelt ook mogelijke SSL-certificaatproblemen die kunnen optreden als uw systeem geen toegang heeft tot CA-certificaten.
<?php
$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // Voor productieomgevingen, overweeg om een speciale database en gebruiker aan te maken
$dsn = "mysql:host=$hostname;dbname=$database";
$options = array(
// Als u een fout tegenkomt zoals "Uncaught PDOException: PDO::__construct(): SSL operation failed with code 1...",
// kan het zijn dat de /etc/ssl/certs/ directory geen CA-certificaten bevat
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 'U bent verbonden met een database die versie ' . $version[0] . "\n";
?>
Omgaan met de fout "SSL operation failed with code 1"
Als u een fout ziet zoals Uncaught PDOException: PDO::__construct(): SSL operation failed with code 1. OpenSSL Error messages: error:0A000086:SSL routines::certificate verify failed, is het waarschijnlijk dat de /etc/ssl/certs/ directory van uw systeem niet de benodigde CA-certificaten bevat.
Als u toegang heeft tot het systeem dat uw PHP-code uitvoert, kunt u de certificaten als volgt installeren:
- Op Ubuntu/Debian, voer
sudo apt-get install ca-certificatesuit - Op Alpine Linux, voer
apk add ca-certificatesuit
Als u geen directe toegang heeft om deze certificaten op uw systeem te installeren, kunt u het certificaat handmatig installeren:
- Download het certificaat naar uw computer: https://letsencrypt.org/certs/isrgrootx1.pem
- Voeg het
isrgrootx1.pembestand toe aan uw PHP-projectbestanden. - Comment de regel
PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/'uit - Uncomment de regel
PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem'
PHP verbinden met MySQL met behulp van inloggegevens uit omgevingsvariabelen
Voor verbeterde beveiliging en eenvoudigere configuratiebeheer wordt aanbevolen om uw inloggegevens niet hard te coderen in uw broncode. Haal in plaats daarvan deze instellingen op uit omgevingsvariabelen zoals hieronder getoond:
<?php
$hostname = getenv('STACKHERO_MYSQL_HOST');
$user = getenv('STACKHERO_MYSQL_USER');
$password = getenv('STACKHERO_MYSQL_PASSWORD');
$database = getenv('STACKHERO_MYSQL_USER'); // Volgens conventie komt de databasenaam overeen met de gebruikersnaam
?>
Het gebruik van omgevingsvariabelen helpt de beveiliging van uw inloggegevens te behouden en maakt uw configuratie beter aanpasbaar aan verschillende omgevingen.