Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

PHP 스크립트에서 LIKE 절을 활용해 MySQL 테이블 데이터와 일치시키는 방법

PHP에서는 mysql_query() 함수 안에 SQL의 WHERE...LIKE 절과 동일한 문법을 그대로 사용할 수 있습니다. 이 함수는 SQL 명령을 실행하는 역할을 하며, SELECT 명령과 함께 WHERE...LIKE 절을 사용한 경우에는 이어서 mysql_fetch_array() 함수를 호출해 선택된 모든 데이터를 가져올 수 있습니다.

반면 WHERE...LIKE 절이 DELETE나 UPDATE 명령과 함께 사용될 경우에는 별도의 추가 PHP 함수 호출이 필요하지 않습니다.

예제

다음 예제는 'tutorials_tbl' 테이블에서 저자 이름에 'jay'가 포함된 모든 레코드를 조회하는 PHP 스크립트입니다.

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   
   $sql = 'SELECT tutorial_id, tutorial_title,
      tutorial_author, submission_date
      FROM tutorials_tbl
      WHERE tutorial_author LIKE "%jay%"';
     
   mysql_select_db('TUTORIALS');
   $retval = mysql_query( $sql, $conn );

   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   
   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Tutorial ID :{$row['tutorial_id']} <br> ".
         "Title: {$row['tutorial_title']} <br> ".
         "Author: {$row['tutorial_author']} <br> ".
         "Submission Date : {$row['submission_date']} <br> ".
         "--------------------------------<br>";
   }
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

코드 설명

위 스크립트의 동작 흐름은 다음과 같습니다.

1. 데이터베이스 연결: mysql_connect()로 호스트, 사용자명, 비밀번호를 이용해 MySQL 서버에 접속하며, 연결에 실패하면 die()로 오류 메시지와 함께 실행을 종료합니다.
2. 쿼리 작성: SELECT문에 WHERE tutorial_author LIKE "%jay%" 조건을 추가해 저자 이름 어디든 'jay'가 포함된 행만 필터링합니다.
3. 쿼리 실행 및 결과 처리: mysql_query()로 쿼리를 실행하고, mysql_fetch_array()를 while 루프와 함께 사용해 결과 집합의 각 행을 연관 배열(MYSQL_ASSOC) 형태로 하나씩 가져와 출력합니다.
4. 연결 종료: 모든 데이터를 출력한 후 mysql_close()로 데이터베이스 연결을 닫습니다.

여기서 LIKE 패턴의 % 기호는 '임의의 문자열(0개 이상)'을 의미하므로, '%jay%'는 이름 앞뒤 위치와 관계없이 'jay'가 포함된 모든 값을 매칭합니다.

참고 사항

위 예제에 사용된 mysql_* 계열 함수(mysql_connect, mysql_query 등)는 PHP 5.5부터 지원 중단(deprecated)되었으며, PHP 7부터는 완전히 제거되었습니다. 따라서 실제 프로젝트에서는 보안과 유지보수 측면에서 더 우수한 mysqli 확장 또는 PDO(PHP Data Objects)와 준비된 문(prepared statement)을 사용하는 것이 권장됩니다.