PHP: Prisijungimas prie MySQL
Sužinokite, kaip prisijungti prie MySQL iš PHP naudojant MySQLi ir PDO
👋 Sveiki atvykę į Stackhero dokumentaciją!
Stackhero siūlo paruoštą naudoti PHP cloud sprendimą, kuris suteikia daugybę privalumų, įskaitant:
- Įdiekite savo programą per kelias sekundes su paprastu
git push.- Naudokite savo domeno vardą ir pasinaudokite automatiniu HTTPS sertifikatų konfigūravimu, kad padidintumėte saugumą.
- Mėgaukitės ramybe su automatinėmis atsarginėmis kopijomis, vieno paspaudimo atnaujinimais ir paprasta, skaidria bei prognozuojama kainodara.
- Gaukite optimalų veikimą ir tvirtą saugumą dėka privačios ir dedikuotos VM.
Taupykite laiką ir supaprastinkite savo gyvenimą: išbandyti Stackhero PHP cloud hosting sprendimą užtrunka tik 5 minutes!
PHP prisijungimas prie MySQL su MySQLi (objektinis stilius)
Šis pavyzdys parodo, kaip prisijungti PHP prie MySQL naudojant MySQLi objektiniu stiliumi. Geriausia praktika yra sukurti atskirą duomenų bazę ir vartotoją jūsų programai, o ne naudoti 'root' paskyrą. Šis požiūris pagerina jūsų programos saugumą.
<?php
$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // Produkcijoje sukurkite atskirą duomenų bazę ir vartotoją phpMyAdmin
$mysqli = mysqli_init();
$mysqliConnected = $mysqli->real_connect($hostname, $user, $password, $database, NULL, NULL, MYSQLI_CLIENT_SSL);
if (!$mysqliConnected) {
die('Prisijungimo klaida: ' . $mysqli->connect_error);
}
echo 'Prisijungimas sėkmingas... ' . $mysqli->host_info . "\n";
$mysqli->close();
?>
PHP prisijungimas prie MySQL su MySQLi (procedūrinis stilius)
Jei teikiate pirmenybę procedūriniam požiūriui, žemiau pateiktas pavyzdys parodo, kaip užmegzti ryšį naudojant MySQLi procedūriniu stiliumi. Kaip visada, rekomenduojama naudoti atskirą duomenų bazę ir ribotą vartotoją, kad padidintumėte saugumą.
<?php
$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // Didesniam saugumui sukurkite atskirą duomenų bazę ir vartotoją phpMyAdmin
$mysqli = mysqli_init();
$mysqliConnected = mysqli_real_connect($mysqli, $hostname, $user, $password, $database, NULL, NULL, MYSQLI_CLIENT_SSL);
if (!$mysqliConnected) {
die('Prisijungimo klaida: ' . mysqli_connect_error($mysqli));
}
echo 'Sėkmė: ' . mysqli_get_host_info($mysqli) . "\n";
mysqli_close($mysqli);
?>
PHP prisijungimas prie MySQL su PDO
PDO siūlo lankstų būdą prisijungti PHP prie MySQL. Žemiau pateiktas pavyzdys iliustruoja, kaip naudoti PDO ryšiui užmegzti. Jis taip pat sprendžia galimas SSL sertifikato problemas, kurios gali kilti, jei jūsų sistema neturi prieigos prie CA sertifikatų.
<?php
$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // Produkcijos aplinkoje apsvarstykite galimybę sukurti atskirą duomenų bazę ir vartotoją
$dsn = "mysql:host=$hostname;dbname=$database";
$options = array(
// Jei susiduriate su klaida kaip "Uncaught PDOException: PDO::__construct(): SSL operation failed with code 1...",
// tai gali būti dėl to, kad /etc/ssl/certs/ kataloge trūksta CA sertifikatų
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 'Jūs esate prisijungę prie duomenų bazės, kurioje veikia versija ' . $version[0] . "\n";
?>
Klaidos "SSL operation failed with code 1" tvarkymas
Jei matote klaidą, tokią kaip Uncaught PDOException: PDO::__construct(): SSL operation failed with code 1. OpenSSL Error messages: error:0A000086:SSL routines::certificate verify failed, tikėtina, kad jūsų sistemos /etc/ssl/certs/ kataloge nėra reikalingų CA sertifikatų.
Jei turite prieigą prie sistemos, kurioje veikia jūsų PHP kodas, galite įdiegti sertifikatus taip:
- Ubuntu/Debian naudokite
sudo apt-get install ca-certificates - Alpine Linux naudokite
apk add ca-certificates
Jei neturite tiesioginės prieigos įdiegti šiuos sertifikatus savo sistemoje, galite įdiegti sertifikatą rankiniu būdu:
- Atsisiųskite sertifikatą į savo kompiuterį: https://letsencrypt.org/certs/isrgrootx1.pem
- Pridėkite
isrgrootx1.pemfailą prie savo PHP projekto failų. - Pakomentuokite eilutę
PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/' - Atkomentuokite eilutę
PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem'
PHP prisijungimas prie MySQL naudojant aplinkos kintamuosius
Didesniam saugumui ir lengvesniam konfigūracijos valdymui rekomenduojama vengti kietai koduoti savo kredencialus šaltinio kode. Vietoj to, gaukite šiuos nustatymus iš aplinkos kintamųjų, kaip parodyta žemiau:
<?php
$hostname = getenv('STACKHERO_MYSQL_HOST');
$user = getenv('STACKHERO_MYSQL_USER');
$password = getenv('STACKHERO_MYSQL_PASSWORD');
$database = getenv('STACKHERO_MYSQL_USER'); // Pagal konvenciją, duomenų bazės pavadinimas atitinka vartotojo vardą
?>
Aplinkos kintamųjų naudojimas padeda išlaikyti jūsų kredencialų saugumą ir daro jūsų konfigūraciją labiau pritaikomą skirtingose aplinkose.