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 PHP cloud platform dat is ontworpen voor snelle en betrouwbare deployments:
- Deploy uw PHP-applicatie naar productie in enkele seconden met een eenvoudige
git push.- Gebruik uw eigen domein, met automatisch geconfigureerde HTTPS-certificaten. Er zijn geen handmatige stappen nodig.
- Vertrouw op automatische back-ups, one-click updates en duidelijke, voorspelbare prijzen. Stackhero regelt deze zaken, zodat u zich kunt richten op uw code.
- Profiteer van uitstekende performance en security op een privé, dedicated infrastructuur die speciaal voor uw applicaties is gebouwd.
Maak uw workflow efficiënter en bespaar tijd. Beginnen met Stackhero's PHP cloud hosting duurt slechts een paar minuten.
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.