티스토리 뷰

개발/PHP

[php] mysql_query() 반환값

Jaeyeon Baek 2015. 9. 8. 19:19


흔히 mysql_query()의 반환 값은 resource ID 혹은 False로 알고 있지요.

하지만 모든 경우에 그런 것은 아닙니다.


http://php.net/manual/kr/function.mysql-query.php

mysql_query()에 대한 메뉴얼을 살펴보면 아래와 같은 문구가 나옵니다.

mysql_query()는 다른 형식의 SQL 구문, INSERT, UPDATE, DELETE, DROP 등에서 성공하면 TRUE를, 실패하면 FALSE를 반환합니다.


당연한 내용이죠? (당연하지 않다면.. 평소 메뉴얼을 제대로 보지 않은 자신에게 채찍질을..)

그럼 아래 내용을 살펴봅시다.

$query = ".....";


$link = mysql_connect("localhost","root","secret");

mysql_select_db("foo", $link);


$rs = mysql_query($query, $link);

mysql_free_result($rs);


php에서 DB에 접근해서 쿼리하는 통상적인 소스코드입니다.


위소스는 $query의 내용에 따라 문제가 될 수도, 되지 않을 수도 있습니다.

(당신이 Warning을 인색하게 대하지 않는다면 문제가 되지 않을 수도 있음)


mysql_free_result()의 인자는 resource ID 입니다.

그런데 위에서 살펴본것처럼 특정 쿼리는 True, False를 반환합니다.

예를들면 아래와 같은..

$query = "set wait_timeout=300";


$link = mysql_connect("localhost","root","secret");

mysql_select_db("foo", $link);


$rs = mysql_query($query, $link);

mysql_free_result($rs); // 여기서 Warning 발생


위 코드를 실행시키면 아래와 같은 에러가 발생합니다.

<b>Warning</b>:  mysql_free_result(): supplied argument is not a valid MySQL result resource in <b>test.php</b> on line <b>39</b><br />


우리가 습관처럼 사용하는 통상적인(혹은 공식같은) 구문에도 충분히 오류를 범하고 있을 수 있기 때문에 항상 주의하는 습관이 필요하겠습니다.

댓글
댓글쓰기 폼