티스토리 뷰
흔히 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 />
우리가 습관처럼 사용하는 통상적인(혹은 공식같은) 구문에도 충분히 오류를 범하고 있을 수 있기 때문에 항상 주의하는 습관이 필요하겠습니다.
'개발 > PHP' 카테고리의 다른 글
[php] crul을 활용한 버스 도착 정보 크롤링 (16) | 2016.05.25 |
---|---|
PHP의 오래된 해시 비교 버그 드러나 (0) | 2015.11.19 |
[php] mail() 함수 사용시에 body에 !(느낌표)가 중간중간 삽입되는 경우 (0) | 2014.01.02 |
[php] getopt() (0) | 2013.12.26 |
[php] https://192.168.0.10/test.php/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000 (0) | 2013.12.09 |
- Total
- Today
- Yesterday