PHP: Połączenie z MySQL
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!
Łączenie PHP z MySQL za pomocą MySQLi (styl obiektowy)
Poniższy przykład pokazuje, jak połączyć PHP z MySQL używając MySQLi w stylu obiektowym. Najlepszą praktyką jest utworzenie dedykowanej bazy danych i użytkownika dla Twojej aplikacji zamiast używania konta 'root'. Takie podejście zwiększa bezpieczeństwo Twojej aplikacji.
<?php
$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // W produkcji utwórz dedykowaną bazę danych i użytkownika w phpMyAdmin
$mysqli = mysqli_init();
$mysqliConnected = $mysqli->real_connect($hostname, $user, $password, $database, NULL, NULL, MYSQLI_CLIENT_SSL);
if (!$mysqliConnected) {
die('Błąd połączenia: ' . $mysqli->connect_error);
}
echo 'Połączenie udane... ' . $mysqli->host_info . "\n";
$mysqli->close();
?>
Łączenie PHP z MySQL za pomocą MySQLi (styl proceduralny)
Jeśli preferujesz podejście proceduralne, poniższy przykład pokazuje, jak nawiązać połączenie używając MySQLi w stylu proceduralnym. Jak zawsze, zaleca się użycie dedykowanej bazy danych i ograniczonego użytkownika dla zwiększenia bezpieczeństwa.
<?php
$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // Dla zwiększenia bezpieczeństwa utwórz dedykowaną bazę danych i użytkownika w phpMyAdmin
$mysqli = mysqli_init();
$mysqliConnected = mysqli_real_connect($mysqli, $hostname, $user, $password, $database, NULL, NULL, MYSQLI_CLIENT_SSL);
if (!$mysqliConnected) {
die('Błąd połączenia: ' . mysqli_connect_error($mysqli));
}
echo 'Sukces: ' . mysqli_get_host_info($mysqli) . "\n";
mysqli_close($mysqli);
?>
Łączenie PHP z MySQL za pomocą PDO
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";
?>
Obsługa błędu "SSL operation failed with code 1"
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:
- Na Ubuntu/Debian, uruchom
sudo apt-get install ca-certificates - 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:
- Pobierz certyfikat na swój komputer: https://letsencrypt.org/certs/isrgrootx1.pem
- Dodaj plik
isrgrootx1.pemdo plików swojego projektu PHP. - Skomentuj linię
PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/' - Odkomentuj linię
PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem'
Łączenie PHP z MySQL używając poświadczeń z zmiennych środowiskowych
Dla zwiększenia bezpieczeństwa i łatwiejszego zarządzania konfiguracją, zaleca się unikanie twardego kodowania poświadczeń w kodzie źródłowym. Zamiast tego, pobierz te ustawienia z zmiennych środowiskowych, jak pokazano poniżej:
<?php
$hostname = getenv('STACKHERO_MYSQL_HOST');
$user = getenv('STACKHERO_MYSQL_USER');
$password = getenv('STACKHERO_MYSQL_PASSWORD');
$database = getenv('STACKHERO_MYSQL_USER'); // Zgodnie z konwencją, nazwa bazy danych odpowiada nazwie użytkownika
?>
Użycie zmiennych środowiskowych pomaga utrzymać bezpieczeństwo Twoich poświadczeń i sprawia, że konfiguracja jest bardziej elastyczna w różnych środowiskach.