댓글 검색 목록

[php] PHP에서 MySQL에 연결하는 3 가지 방법

페이지 정보

작성자 운영자 작성일 20-04-19 17:52 조회 1,098 댓글 0

데이터베이스 연결 


PHP에서 MySQL에 연결하는 방법에 대한 튜토리얼에 오신 것을 환영합니다. 그래서 당신은 PHP의 기초를 가지고 데이터베이스의 어두운 예술에 손 대고 싶습니까? PHP에서 MySQL 데이터베이스에 연결하는 경우 다음 3 가지 중에서 선택할 수 있습니다.

  • PHP 데이터베이스 객체 (PDO) : $connect = new PDO(“mysql : host = $ host; dbname = $ dbname”, $ user, $ password);
  • MySQLi : $connect = 새로운 mysqli($ host, $ user, $ password, $ dbname);
  • MySQL (더 이상 사용되지 않음) : $connect = new mysql($ host, $ user, $ password, $ dbname);

왜 3 가지 방법이 있습니까? 그들 사이의 차이점은 무엇입니까? 가장 좋은 방법은 무엇입니까? 코드 예제가 포함 된이 안내서에서 살펴볼 내용입니다. 계속 읽으십시오!


ⓘ이 튜토리얼의 시작 부분에 모든 소스 코드가 포함 된 zip 파일이 포함되어 있으므로 모든 것을 복사하여 붙여 넣을 필요가 없습니다.


다운로드 


먼저 약속 된 다운로드 링크가 있습니다.


소스 코드 다운로드 


소스 코드를 다운로드하려면 여기를 클릭하십시오. MIT 라이센스에 따라 릴리스되었으므로 그 위에 빌드하거나 자신의 프로젝트에서 자유롭게 사용하십시오.


빠른 시작 


  • 먼저 자신의 MySQL 사본을 올바르게 설치하고 구성했는지 확인하십시오.
  • 폴더에 다운로드하여 압축을 풉니다.
  • 원하는 경우 0-dummy.sql을 가져옵니다.
  • 1-pdo.php, 2-mysqli.php 및 3-mysql.php는 데이터베이스에 연결하는 각 방법을 보여줍니다.
  • 스크립트에서 데이터베이스 호스트, 사용자 이름 및 비밀번호를 변경해야 합니다.


기본 


코드를 살펴보기 전에 먼저 몇 가지 기본 사항을 살펴 보겠습니다. 아직 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 


데이터베이스를 처리하기 위해 왜 그렇게 많은 확장이 있습니까? 간단히 말해 :


  • MySQL – 역사적으로 PHP는 항상 MySQL과 "번들"로 제공되었으며 이는 MySQL 만 지원하는 독점적 인 PHP 확장입니다. 그러나 이후 더 이상 사용되지 않고 MySQLi로 대체되었습니다. 정말 오래된 시스템을 지원하지 않으면 이것을 사용하지 마십시오. PHP 7에서도 완전히 제거되었습니다.
  • MySQLi – MySQL의 확장 기능이 향상되었습니다. 성능 및 성능 측면에서 더 우수하지만 여전히 권장되지는 않습니다.
  • PDO (PHP Data Objects) – 더 많은 데이터베이스 (MySQL 이외의)가 대중화되기 시작하면서 PHP 개발자는 PDO를 개발했습니다. 이 확장 기능은 MySQL 및 수많은 다른 데이터베이스를 지원합니다. PDO는 향후 프로젝트를 증명하고자 할 때 갈 수 있는 방법입니다.

따라서 php.ini 파일에서 확인하면 Firebird, SQLite, ODBC와 같은 다른 PDO 데이터베이스 확장자도 있음을 알 수 있습니다. PDO를 사용하는 것이 현명하며 앞으로 데이터베이스를 훨씬 쉽게 전환 할 수 있습니다.


예를 들어, 향후 MySQL에서 보다 전문적인 Oracle로 업그레이드 할 수 있습니다. PHP 코드를 변경할 필요 없이 각각의 PDO 확장을 활성화하고 설정을 업데이트하기 만하면 됩니다.


확인 


MySQL이 제대로 설치되었는지 확인하기 위해 한 줄로 간단한 PHP 파일을 작성할 수 있습니다.


<?php phpinfo(); ?> 


웹 브라우저에서 이 스크립트에 액세스하여 확장 기능이 활성화되어 있는지 확인하십시오.


info-mysql.jpg 


데이터베이스 관리 도구 


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) 확장을 사용하며 채택하는 것이 좋습니다.


스크립트 


<?php // (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; } ?> 


빠른 설명 


  • $pdo = new PDO(DATA-SOURCE-NAME, USER, PASSWORD, OPTIONS)를 사용하여 데이터베이스에 연결하십시오.
  • $stmt = $pdo->prepare(SQL) 는 SQL 쿼리를 시작합니다.
  • $stmt->execute([PARAMETERS])는 매개 변수를 연결하고 SQL 쿼리를 실행합니다.
  • 선택 쿼리의 경우 $stmt-> fetch() 또는 $stmt-> fetchAll을 사용하여 결과를 얻으십시오.

MYSQLI와 연결 


이 다음 방법은 어디에서나 볼 수 있는 일반적인 방법입니다. 향상된 MySQLi 확장 사용.


스크립트 


<?php // (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(); ?> 


빠른 설명 


  • $mysqli = new mysqli(HOST, USER, PASSWORD, NAME)를 사용하여 데이터베이스에 연결하십시오.
  • charset $mysqli->set_charset(CHARSET)을 설정하는 것은 선택 사항이지만 권장됩니다.
  • $result = $mysqli->query(SQL)은 SQL 쿼리를 실행합니다.
  • while ($row = $result->fetch_assoc())는 결과를 반복합니다 (선택 쿼리의 경우).
  • 결과 $result-> close()를 수동으로 해제해야 합니다. 그렇지 않으면 시스템 자원이 낭비됩니다.
  • 마지막으로 데이터베이스 연결 $mysqli-> close()를 닫습니다.

MYSQL과 연결 


이 마지막 방법은 오래되었고 기능이 없습니다. 레거시 시스템을 지원해야 하는 경우에만 사용하십시오.


스크립트 


<?php // (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 


php-mysql-connect-small.jpg 



댓글목록 0

등록된 댓글이 없습니다.

웹학교 로고

온라인 코딩학교

코리아뉴스 2001 - , All right reserved.