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!

Š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();

?>

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);

?>

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";

?>

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:

  1. Ubuntu/Debian naudokite sudo apt-get install ca-certificates
  2. Alpine Linux naudokite apk add ca-certificates

Jei neturite tiesioginės prieigos įdiegti šiuos sertifikatus savo sistemoje, galite įdiegti sertifikatą rankiniu būdu:

  1. Atsisiųskite sertifikatą į savo kompiuterį: https://letsencrypt.org/certs/isrgrootx1.pem
  2. Pridėkite isrgrootx1.pem failą prie savo PHP projekto failų.
  3. Pakomentuokite eilutę PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/'
  4. Atkomentuokite eilutę PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem'

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.