PHP: Łączenie PHP z MySQL za pomocą PDO

Ta dokumentacja jest częścią przewodnika Połączenie z MySQL. Pełny przewodnik znajdziesz tutaj: Dowiedz się, jak połączyć się z MySQL z PHP za pomocą MySQLi i PDO.

👋 Witamy w dokumentacji Stackhero!

Stackhero oferuje gotowe do użycia rozwiązanie PHP cloud, które zapewnia wiele korzyści, w tym:

  • Wdrażaj swoją aplikację w kilka sekund za pomocą prostego git push.
  • Używaj własnej nazwy domeny i korzystaj z automatycznej konfiguracji certyfikatów HTTPS dla zwiększonego bezpieczeństwa.
  • Ciesz się spokojem dzięki automatycznym kopiom zapasowym, aktualizacjom jednym kliknięciem oraz prostemu, przejrzystemu i przewidywalnemu cennikowi.
  • Uzyskaj optymalną wydajność i solidne zabezpieczenia dzięki prywatnej i dedykowanej VM.

Oszczędzaj czas i upraszczaj sobie życie: wypróbowanie rozwiązania PHP cloud hosting Stackhero zajmuje tylko 5 minut!

PDO oferuje elastyczną metodę łączenia PHP z MySQL. Poniższy przykład ilustruje, jak używać PDO do nawiązania połączenia. Zawiera również informacje o potencjalnych problemach z certyfikatami SSL, które mogą wystąpić, jeśli Twój system nie ma dostępu do certyfikatów CA.

<?php

$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // Dla środowisk produkcyjnych rozważ utworzenie dedykowanej bazy danych i użytkownika

$dsn = "mysql:host=$hostname;dbname=$database";

$options = array(
  // Jeśli napotkasz błąd typu "Uncaught PDOException: PDO::__construct(): SSL operation failed with code 1...",
  // może to być spowodowane brakiem certyfikatów CA w katalogu /etc/ssl/certs/
  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 'Jesteś połączony z bazą danych działającą na wersji ' . $version[0] . "\n";

?>

Jeśli zobaczysz błąd taki jak Uncaught PDOException: PDO::__construct(): SSL operation failed with code 1. OpenSSL Error messages: error:0A000086:SSL routines::certificate verify failed, prawdopodobnie katalog /etc/ssl/certs/ w Twoim systemie nie zawiera niezbędnych certyfikatów CA.

Jeśli masz dostęp do systemu, na którym działa Twój kod PHP, możesz zainstalować certyfikaty w następujący sposób:

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

Jeśli nie masz bezpośredniego dostępu do instalacji tych certyfikatów na swoim systemie, możesz zainstalować certyfikat ręcznie:

  1. Pobierz certyfikat na swój komputer: https://letsencrypt.org/certs/isrgrootx1.pem
  2. Dodaj plik isrgrootx1.pem do plików swojego projektu PHP.
  3. Skomentuj linię PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/'
  4. Odkomentuj linię PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem'