데이터베이스 연결
PHP에서 MySQL에 연결하는 방법에 대한 튜토리얼에 오신 것을 환영합니다. 그래서 당신은 PHP의 기초를 가지고 데이터베이스의 어두운 예술에 손 대고 싶습니까? PHP에서 MySQL 데이터베이스에 연결하는 경우 다음 3 가지 중에서 선택할 수 있습니다.
왜 3 가지 방법이 있습니까? 그들 사이의 차이점은 무엇입니까? 가장 좋은 방법은 무엇입니까? 코드 예제가 포함 된이 안내서에서 살펴볼 내용입니다. 계속 읽으십시오!
ⓘ이 튜토리얼의 시작 부분에 모든 소스 코드가 포함 된 zip 파일이 포함되어 있으므로 모든 것을 복사하여 붙여 넣을 필요가 없습니다.
다운로드
먼저 약속 된 다운로드 링크가 있습니다.
소스 코드 다운로드
소스 코드를 다운로드하려면 여기를 클릭하십시오. MIT 라이센스에 따라 릴리스되었으므로 그 위에 빌드하거나 자신의 프로젝트에서 자유롭게 사용하십시오.
빠른 시작
기본
코드를 살펴보기 전에 먼저 몇 가지 기본 사항을 살펴 보겠습니다. 아직 MySQL을 설치하지 않은 경우 이 섹션에서 이를 수행하는 방법을 안내합니다. 컴퓨터에 MySQL이 이미 설정되어 있으면 이 섹션을 건너 뛰십시오.
MySQL 설치
자신의 웹 서버를 얻는 가장 쉬운 방법은 XAMPP – Apache, MySQL, PHP 및 Perl 올인원 설치 프로그램 패키지를 다운로드하여 설치하는 것입니다. 그렇지 않은 경우 MySQL… Linux 사용자를 수동으로 설치하도록 선택할 수도 있습니다. 명령 행 가져 오기를 쉽게 수행 할 수 있습니다.
sudo apt-get install mysql-server
Windows 사용자는 MySQL 설치 프로그램을 수동으로 다운로드하여 실행해야 합니다.
PHP.INI 설정
MySQL을 설치했으면 php.ini 파일에서 해당 PHP MySQL 확장이 활성화되어 있는지 확인하십시오.
extension=mysql extension=mysqli extension=pdo_mysql
PDO VS MYSQLI VS MYSQL
데이터베이스를 처리하기 위해 왜 그렇게 많은 확장이 있습니까? 간단히 말해 :
따라서 php.ini 파일에서 확인하면 Firebird, SQLite, ODBC와 같은 다른 PDO 데이터베이스 확장자도 있음을 알 수 있습니다. PDO를 사용하는 것이 현명하며 앞으로 데이터베이스를 훨씬 쉽게 전환 할 수 있습니다.
예를 들어, 향후 MySQL에서 보다 전문적인 Oracle로 업그레이드 할 수 있습니다. PHP 코드를 변경할 필요 없이 각각의 PDO 확장을 활성화하고 설정을 업데이트하기 만하면 됩니다.
확인
MySQL이 제대로 설치되었는지 확인하기 위해 한 줄로 간단한 PHP 파일을 작성할 수 있습니다.
phpinfo();
웹 브라우저에서 이 스크립트에 액세스하여 확장 기능이 활성화되어 있는지 확인하십시오.
데이터베이스 관리 도구
XAMPP 패키지를 설치 한 경우 http : // localhost / phpmyadmin에서 쉽게 액세스 할 수 있는 매우 유용한 데이터베이스 관리 도구가 제공됩니다. 그렇지 않은 경우 phpMyAdmin 공식 웹 사이트에서 수동으로 다운로드 할 수도 있습니다.
DUMMY TABLE & DATA
시연을 위해 이 가이드의 예제로 사용할 작은 더미 테이블이 있습니다. 원하는 경우 phpMyAdmin 또는 명령 줄을 사용하여 이 데이터베이스를 가져옵니다.
CREATE TABLE `test` ( `id` int(11) NOT NULL, `name` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `test` (`id`, `name`) VALUES (1, 'John Doe'), (2, 'Jane Doe'), (3, 'Jay Doe'), (4, 'Joy Doe'), (5, 'Jordan Doe'); ALTER TABLE `test` ADD PRIMARY KEY (`id`); ALTER TABLE `test` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;
PDO와 연결
이 첫 번째 방법은 PDO (PHP Database Object) 확장을 사용하며 채택하는 것이 좋습니다.
스크립트
// (1) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN! define('DB_HOST', 'localhost'); define('DB_NAME', 'test'); define('DB_CHARSET', 'utf8'); define('DB_USER', 'root'); define('DB_PASSWORD', ''); // (2) ATTEMPT DATABASE CONNECTION try { $str = "mysql:host=" . DB_HOST . ";charset=" . DB_CHARSET; if (defined('DB_NAME')) { $str .= ";dbname=" . DB_NAME; } $pdo = new PDO( $str, DB_USER, DB_PASSWORD, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false ] ); } // ERROR - THROW ERROR MESSAGE OR SOMETHING catch (Exception $ex) { print_r($ex); die(); } // (3) CONNECTION OK // Fetch some entries, do your SQL yoga $stmt = $pdo->prepare("SELECT * FROM `test` WHERE `id`<=?"); $stmt->execute([3]); $result = $stmt->fetchAll(); print_r($result); // (4) CLOSE THE DATABASE CONNECTION // Optional. PHP should do this automatically, but good to manually make sure anyway. if ($stmt !== null) { $stmt = null; } if ($pdo !== null) { $pdo = null; }
빠른 설명
MYSQLI와 연결
이 다음 방법은 어디에서나 볼 수 있는 일반적인 방법입니다. 향상된 MySQLi 확장 사용.
스크립트
// (1) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN! define('DB_HOST', 'localhost'); define('DB_NAME', 'test'); define('DB_CHARSET', 'utf8'); define('DB_USER', 'root'); define('DB_PASSWORD', ''); // (2) ATTEMPT DATABASE CONNECTION $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); // ERROR - THROW ERROR MESSAGE OR SOMETHING if ($mysqli->connect_error) { echo $mysqli->connect_error; die(); } // (3) SET CHARSET $mysqli->set_charset(DB_CHARSET); // (4) CONNECTION OK // Fetch some entries, do your SQL yoga $result = $mysqli->query("SELECT * FROM `test` WHERE `id`<=3"); print_r($result); while ($row = $result->fetch_assoc()) { print_r($row); } $result->close(); // (5) CLOSE THE DATABASE CONNECTION $mysqli->close();
빠른 설명
MYSQL과 연결
이 마지막 방법은 오래되었고 기능이 없습니다. 레거시 시스템을 지원해야 하는 경우에만 사용하십시오.
스크립트
// (1) DATABASE SETTINGS - CHANGE THESE TO YOUR OWN! define('DB_HOST', 'localhost'); define('DB_NAME', 'test'); define('DB_CHARSET', 'utf8'); define('DB_USER', 'root'); define('DB_PASSWORD', ''); // (2) ATTEMPT DATABASE CONNECTION $mysql = new mysql(DB_HOST, DB_USER, DB_PASSWORD); // ERROR - THROW ERROR MESSAGE OR SOMETHING if (!$mysql) { echo mysql_error(); die(); } // (3) SET DATABASE + CHARSET mysql_select_db(DB_NAME, $mysql); mysql_set_charset(DB_CHARSET, $mysql); // (4) CONNECTION OK // Fetch some entries, do your SQL yoga $result = mysql_query("SELECT * FROM `test` WHERE `id`<=3"); print_r($result); while ($row = mysql_fetch_array($result, MYSQL_NUM)) { print_r($row); } mysql_free_result($result); // (5) CLOSE THE DATABASE CONNECTION mysql_close($mysql);
빠른 설명
글쎄요, 이것에는 많은 설명이 필요하다고 생각하지 마십시오. 대신 새로운 mysql()을 사용한다는 점을 제외하면 MySQLi와 거의 동일합니다.
유용한 비트
이것이 이 프로젝트의 전부이며, 여기에 도움이 될만한 추가 정보에 대한 작은 섹션이 있습니다.
참조 및 링크
CHEAT SHEET
등록된 댓글이 없습니다.