Azure Database for MySQL - 유연한 서버와 함께 PHP 사용
적용 대상: Azure Database for MySQL - 유연한 서버
이 빠른 시작에서는 PHP 애플리케이션을 사용하여 Azure Database for MySQL 유연한 서버에 연결하는 방법을 보여 줍니다. SQL 문을 사용하여 데이터베이스의 데이터를 쿼리, 삽입, 업데이트 및 삭제하는 방법을 보여 줍니다. 이 문서에서는 PHP를 사용한 개발에 익숙하고 Azure Database for MySQL 유연한 서버 작업에 익숙하지 않은 것으로 가정합니다.
필수 조건
이 빠른 시작에서는 다음과 같은 가이드 중 하나에서 만들어진 리소스를 시작 지점으로 사용합니다.
- Azure Portal을 사용하여 Azure Database for MySQL 유연한 서버 인스턴스 만들기
- Azure CLI를 사용하여 Azure Database for MySQL 유연한 서버 인스턴스 만들기
클라이언트 워크스테이션 준비
프라이빗 액세스(가상 네트워크 통합)를 사용하여 유연한 서버를 만든 경우 서버와 동일한 가상 네트워크 내의 리소스에서 서버에 연결해야 합니다. 가상 머신을 만들고 유연한 서버로 만든 가상 네트워크에 추가할 수 있습니다. Azure CLI를 사용하여 Azure Database for MySQL 유연한 서버 가상 네트워크 만들기 및 관리를 참조하세요.
퍼블릭 액세스(허용되는 IP 주소)를 사용하여 유연한 서버를 만든 경우 서버의 방화벽 규칙 목록에 로컬 IP 주소를 추가할 수 있습니다. Azure CLI를 사용하여 Azure Database for MySQL 유연한 서버 방화벽 규칙 만들기 및 관리를 참조하세요.
PHP 설치
사용자의 서버에 PHP를 설치하거나 PHP를 포함하는 Azure 웹앱을 만듭니다. 방화벽 규칙을 만드는 방법을 알아보려면 방화벽 규칙 만들기 및 관리를 참조하세요.
- PHP 7.1.4 버전 다운로드.
- PHP를 설치하고 PHP 매뉴얼에서 자세한 구성 정보 참조.
연결 정보 가져오기
Azure Database for MySQL 유연한 서버 인스턴스에 연결하는 데 필요한 연결 정보를 가져옵니다. 정규화된 서버 이름 및 로그인 자격 증명이 필요합니다.
- Azure Portal에 로그인합니다.
- Azure Portal의 왼쪽 메뉴에서 모든 리소스를 선택한 다음, 생성한 서버를 검색합니다(예: mydemoserver).
- 서버 이름을 선택합니다.
- 서버의 개요 패널에 있는 서버 이름과 서버 관리자 로그인 이름을 기록해 둡니다. 암호를 잊어버리면 이 패널에서 암호를 재설정할 수 있습니다.
PHP에서 TLS/SSL을 사용하여 유연한 서버에 연결
애플리케이션에서 TLS/SSL을 통해 유연한 서버에 암호화된 연결을 설정하려면 다음 코드 샘플을 참조하세요. https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem에서 TLS/SSL을 통해 통신하는 데 필요한 인증서를 다운로드할 수 있습니다.
$conn = mysqli_init();
mysqli_ssl_set($conn,NULL,NULL, "/var/www/html/DigiCertGlobalRootCA.crt.pem", NULL, NULL);
mysqli_real_connect($conn, 'mydemoserver.mysql.database.azure.com', 'myadmin', 'yourpassword', 'quickstartdb', 3306, MYSQLI_CLIENT_SSL);
if (mysqli_connect_errno($conn)) {
die('Failed to connect to MySQL: '.mysqli_connect_error());
}
테이블 연결 및 생성
CREATE TABLE SQL 문을 사용하여 테이블을 연결하고 생성하려면 다음 코드를 사용하세요.
이 코드는 PHP에 포함된 MySQL Improved Extension(mysqli) 클래스를 사용합니다. 이 코드는 mysqli_init 및 mysqli_real_connect 메서드를 호출하여 MySQL에 연결합니다. 그리고 mysqli_query 메서드를 호출하여 쿼리를 실행합니다. 그런 다음 mysqli_close 메서드를 호출하여 연결을 닫습니다.
host, username, password 및 db_name 매개 변수는 원하는 값으로 바꾸세요.
<?php
$host = 'mydemoserver.mysql.database.azure.com';
$username = 'myadmin';
$password = 'your_password';
$db_name = 'your_database';
//Establishes the connection
$conn = mysqli_init();
mysqli_real_connect($conn, $host, $username, $password, $db_name, 3306);
if (mysqli_connect_errno($conn)) {
die('Failed to connect to MySQL: '.mysqli_connect_error());
}
// Run the create table query
if (mysqli_query($conn, '
CREATE TABLE Products (
`Id` INT NOT NULL AUTO_INCREMENT ,
`ProductName` VARCHAR(200) NOT NULL ,
`Color` VARCHAR(50) NOT NULL ,
`Price` DOUBLE NOT NULL ,
PRIMARY KEY (`Id`)
);
')) {
printf("Table created\n");
}
//Close the connection
mysqli_close($conn);
?>
데이터 삽입
INSERT SQL 문을 사용하여 데이터를 연결하고 삽입하려면 다음 코드를 사용하세요.
이 코드는 PHP에 포함된 MySQL Improved Extension(mysqli) 클래스를 사용합니다. 이 코드는 mysqli_prepare 메서드를 사용하여 준비된 INSERT 문을 만든 후 mysqli_stmt_bind_param 메서드를 사용하여 삽입된 각 열 값의 매개 변수를 바인딩합니다. mysqli_stmt_execute 메서드를 사용하여 문을 실행한 후 mysqli_stmt_close 메서드를 사용하여 문을 닫습니다.
host, username, password 및 db_name 매개 변수는 원하는 값으로 바꾸세요.
<?php
$host = 'mydemoserver.mysql.database.azure.com';
$username = 'myadmin';
$password = 'your_password';
$db_name = 'your_database';
//Establishes the connection
$conn = mysqli_init();
mysqli_real_connect($conn, $host, $username, $password, $db_name, 3306);
if (mysqli_connect_errno($conn)) {f
die('Failed to connect to MySQL: '.mysqli_connect_error());
}
//Create an Insert prepared statement and run it
$product_name = 'BrandNewProduct';
$product_color = 'Blue';
$product_price = 15.5;
if ($stmt = mysqli_prepare($conn, "INSERT INTO Products (ProductName, Color, Price) VALUES (?, ?, ?)")) {
mysqli_stmt_bind_param($stmt, 'ssd', $product_name, $product_color, $product_price);
mysqli_stmt_execute($stmt);
printf("Insert: Affected %d rows\n", mysqli_stmt_affected_rows($stmt));
mysqli_stmt_close($stmt);
}
// Close the connection
mysqli_close($conn);
?>
데이터 읽기
SELECT SQL 문을 사용하여 데이터를 연결하고 읽으려면 다음 코드를 사용하세요. 이 코드는 PHP에 포함된 MySQL Improved Extension(mysqli) 클래스를 사용합니다. 이 코드는 mysqli_query 메서드를 사용하여 SQL 쿼리를 수행하고 mysqli_fetch_assoc 메서드를 사용하여 결과 행을 페치합니다.
host, username, password 및 db_name 매개 변수는 원하는 값으로 바꾸세요.
<?php
$host = 'mydemoserver.mysql.database.azure.com';
$username = 'myadmin';
$password = 'your_password';
$db_name = 'your_database';
//Establishes the connection
$conn = mysqli_init();
mysqli_real_connect($conn, $host, $username, $password, $db_name, 3306);
if (mysqli_connect_errno($conn)) {
die('Failed to connect to MySQL: '.mysqli_connect_error());
}
//Run the Select query
printf("Reading data from table: \n");
$res = mysqli_query($conn, 'SELECT * FROM Products');
while ($row = mysqli_fetch_assoc($res)) {
var_dump($row);
}
//Close the connection
mysqli_close($conn);
?>
데이터 업데이트
UPDATE SQL 문을 사용하여 데이터를 연결하고 업데이트하려면 다음 코드를 사용하세요.
이 코드는 PHP에 포함된 MySQL Improved Extension(mysqli) 클래스를 사용합니다. 이 코드는 mysqli_prepare 메서드를 사용하여 준비된 UPDATE 문을 만든 후 mysqli_stmt_bind_param 메서드를 사용하여 업데이트된 각 열 값의 매개 변수를 바인딩합니다. mysqli_stmt_execute 메서드를 사용하여 문을 실행한 후 mysqli_stmt_close 메서드를 사용하여 문을 닫습니다.
host, username, password 및 db_name 매개 변수는 원하는 값으로 바꾸세요.
<?php
$host = 'mydemoserver.mysql.database.azure.com';
$username = 'myadmin';
$password = 'your_password';
$db_name = 'your_database';
//Establishes the connection
$conn = mysqli_init();
mysqli_real_connect($conn, $host, $username, $password, $db_name, 3306);
if (mysqli_connect_errno($conn)) {
die('Failed to connect to MySQL: '.mysqli_connect_error());
}
//Run the Update statement
$product_name = 'BrandNewProduct';
$new_product_price = 15.1;
if ($stmt = mysqli_prepare($conn, "UPDATE Products SET Price = ? WHERE ProductName = ?")) {
mysqli_stmt_bind_param($stmt, 'ds', $new_product_price, $product_name);
mysqli_stmt_execute($stmt);
printf("Update: Affected %d rows\n", mysqli_stmt_affected_rows($stmt));
//Close the connection
mysqli_stmt_close($stmt);
}
mysqli_close($conn);
?>
데이터 삭제
DELETE SQL 문을 사용하여 데이터를 연결하고 읽으려면 다음 코드를 사용하세요.
이 코드는 PHP에 포함된 MySQL Improved Extension(mysqli) 클래스를 사용합니다. 이 코드는 mysqli_prepare 메서드를 사용하여 준비된 DELETE 문을 만든 후 mysqli_stmt_bind_param 메서드를 사용하여 문의 Where 절에 대한 매개 변수를 바인딩합니다. mysqli_stmt_execute 메서드를 사용하여 문을 실행한 후 mysqli_stmt_close 메서드를 사용하여 문을 닫습니다.
host, username, password 및 db_name 매개 변수는 원하는 값으로 바꾸세요.
<?php
$host = 'mydemoserver.mysql.database.azure.com';
$username = 'myadmin';
$password = 'your_password';
$db_name = 'your_database';
//Establishes the connection
$conn = mysqli_init();
mysqli_real_connect($conn, $host, $username, $password, $db_name, 3306);
if (mysqli_connect_errno($conn)) {
die('Failed to connect to MySQL: '.mysqli_connect_error());
}
//Run the Delete statement
$product_name = 'BrandNewProduct';
if ($stmt = mysqli_prepare($conn, "DELETE FROM Products WHERE ProductName = ?")) {
mysqli_stmt_bind_param($stmt, 's', $product_name);
mysqli_stmt_execute($stmt);
printf("Delete: Affected %d rows\n", mysqli_stmt_affected_rows($stmt));
mysqli_stmt_close($stmt);
}
//Close the connection
mysqli_close($conn);
?>