(PHP 4, PHP 5)
mysql_query — MySQL 질의를 전송
mysql_query()는 link_identifier 로 지정한 데이터베이스 서버에 하나의 질의를 전송합니다. (다중 질의는 지원하지 않습니다)
SQL 질의
질의 문자열은 세미콜론으로 끝나지 않아야 합니다.
MySQL 연결. 지정하지 않으면 mysql_connect()로 연 마지막 연결을 사용합니다. 연결이 없으면, 인수 없이 mysql_connect()를 호출하여 연결을 만듭니다. 연결이 성립되지 않으면 E_WARNING 등급의 오류를 생성합니다.
mysql_query()는 SELECT, SHOW, DESCRIBE, EXPLAIN, 결과셋을 반환하는 기타 구문에서 성공시 resource를, 오류시 FALSE를 반환합니다.
mysql_query()는 다른 형식의 SQL 구문, INSERT, UPDATE, DELETE, DROP 등에서 성공하면 TRUE를, 실패하면 FALSE를 반환합니다.
반환되는 결과 리소스는 mysql_fetch_array()와 같은 결과 테이블을 다루는 함수들에 전달하여 데이터에 접근할 수 있다.
SELECT 구문으로 부터 얼마나 많은 행이 있는지 알기 위해서는 mysql_num_rows()를, DELETE, INSERT, REPLACE, UPDATE 구문으로 변경된 행의 개수를 알기 위해서는 mysql_affected_rows()를 사용한다.
질의에 의해 참조되는 테이블에 접근을 허용되지 않은 사용자에 의해 mysql_query()가 실패하면 FALSE를 반환한다.
Example #1 잘못된 질의
다음 질의는 문법적으로 오류가 있어서 mysql_query()는 실패하고, FALSE를 반환한다.
<?php
$result = mysql_query('SELECT * WHERE 1=1');
if (!$result) {
die('Invalid query: ' . mysql_error());
}
?>
Example #2 유효한 질의
다음 질의는 유효한 질의로서 mysql_query()는 resource를 반환한다.
<?php
// 사용자에 의해서 주어집니다. 예를 들면,
$firstname = 'fred';
$lastname = 'fox';
// 질의 만들기
// SQL 질의를 수행하는 가장 좋은 방법입니다
// 더 많은 예제는, mysql_real_escape_string()을 참고하십시오
$query = sprintf("SELECT firstname, lastname, address, age FROM friends WHERE firstname='%s' AND lastname='%s'",
mysql_real_escape_string($firstname),
mysql_real_escape_string($lastname));
// 질의 수행
$result = mysql_query($query);
// 결과 확인
// 실제 질의가 MySQL로 전해지고, 오류가 발생했을 경우입니다. 디버깅에 유용합니다.
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
// 결과 사용하기
// $result를 출력하려고 하면, resource 내부 정보에 접근할 수 없습니다.
// mysql 결과 함수 중 하나를 사용해야 합니다.
// mysql_result(), mysql_fetch_array(), mysql_fetch_row() 등을 참고하십시오.
while ($row = mysql_fetch_assoc($result)) {
echo $row['firstname'];
echo $row['lastname'];
echo $row['address'];
echo $row['age'];
}
// 결과셋으로 할당된 리소스를 해제합니다
// 스크립트 종료 시에 자동으로 이루어집니다
mysql_free_result($result);
?>