mysql_result, mysql_fetch_row, _array
DB/MySQL 2010. 4. 27. 09:54int mysql_result(int result, int row, mixed field)
결과 레코드 세트에서 하나의 필드값을 얻는다.
mysql_result() 함수 역시 결과 레코드 세트에서 필드값을 가져오는 역할을 한다. mysql_fetch_row(), mysql_fetch_object(), mysql_fetch_array() 함수가 결과 레코드 세트에서 배열이나 객체의 형태로 하나의 레코드가 가진 모든 필드값을 한꺼번에 가져오는데
반해 mysql_result() 함수는 한번 호출할 때 레코드가 가진 여러 필드 중에서 하나의 필드값만을 반환한다. 따라서 쿼리 결과 검색되어진 레코드 세트의 크기가 큰 경우에는 mysql_result() 함수보다는 mysql_fetch_row(), _array(), _object() 함수를 사용하는 것이 휠씬 빠른 결과를 보여준다.
name |
id |
|
sex |
milage |
level |
김영미 |
guncat |
F |
2800 |
C | |
길수현 |
suhyun |
F |
4000 |
A |
* mysql_result($result, 0, 1) == mysql_result($result, 0, "id") ==> guncat 출력
따라서 mysql_result() 함수를 이용하여 각각 이들 셀의 값에 접근하려면 모두 12번의 호출이 필요한 셈이다. 그러므로 결과 레코드가
커질 수록 mysql_fetch_row(), _object() 함수를 이용하는 것이 속도 면에서 휠씬 유리하다
ex)
<html>
<head>
<style type="text/css">
<!--
BODY, TR, TH, TD {
font-size : 10pt;
}
//-->
</style>
</head>
<body>
<?
$dbconn = mysql_connect("localhost","php","php99") || die("DB서버 연결에 실패하였습니다!");
$status = mysql_select_db("sample",$dbconn);
if(!$status) {
$errNO = mysql_errno($dbconn);
$errMSG = mysql_error($dbconn);
echo("서버의 sample 데이터베이스연결에 실패하였습니다!<br>");
echo("에러코드 $errNO : $errMSG<br>");
exit;
}
$query = "SELECT name,id,email,sex,milage,level FROM userdb WHERE milage >= 3000 ORDER BY milage DESC";
$result = mysql_query($query,$dbconn);
if(!$result) {
$errNO = mysql_errno($dbconn);
$errMSG = mysql_error($dbconn);
echo("에러코드 $errNO : $errMSG<br>");
exit;
}
$rows = mysql_num_rows($result);
$fields = mysql_num_fields($result);
echo("<table width=600 border=0 cellpadding=10>\n");
echo("<tr>\n");
for($j = 0; $j < $fields; $j++) {
$name = mysql_field_name($result,$j);
echo("<td bgColor=pink align=center>$name</td>\n");
}
echo("</tr>\n");
echo("<tr>\n");
for($i = 0; $i < $rows; $i++) {
for($j = 0; $j < $fields; $j++) {
$value = mysql_result($result,$i,$j);
echo("<td bgColor=lightyellow align=center>$value</td>\n");
}
echo("</tr>");
}
echo("</tr>\n");
echo("</table>");
mysql_close($dbconn);
?>
</body> [출처] mysql_result 함수|작성자 로그아웃
</html>
[추가]
속도면에서...
mysql_fetch_row() -> mysql_fetch_array() -> mysql_result()
앞쪽에 있는 것이 재일 빠르답니다.
그럼 질문에 소스를 수정해 보면...
$new_id = mysql_fetch_row(mysql_query("select max(id) from board"));
$dbresult=mysql_query("update board set id_num=$new_id[0] where id=$new_id[0]");
이렇게 사용하시면 되겠습니다.
참고)
mysql_fetch_row() : query 결과 값 접근시 번호로써 접근함.
예) $rows[0], $rows[1].....
mysql_fetch_array() : query 결과 값 접근시 번호 또는 필드명 으로 접근함.
예) $rows[0], $rows[1]... 또는 $rows[no], $rows[name]...
mysql_result() : 결과 값 접근시 row 와 field 번호로 접근합니다.
예) 사용법 : mysql_result($result, row, field);
$result = mysql_query("select no,name from test order by no");
[ 예제결과값 ]
field 0 field 1
▼ ▼
+-----------------+
| no | name |
+-----------------+
| 1 | test1 | <- row 0
| 2 | test2 | <- row 1
+-----------------+
mysql_result($result,0,0); // 1
mysql_result($result,0,1); // test1
mysql_result($result,1,0); // 2
mysql_result($result,1,1); // test2
'DB > MySQL' 카테고리의 다른 글
php mysql 연동 함수 (0) | 2010.05.10 |
---|---|
mysql_affected_rows, mysql_num_rows 차이 (0) | 2010.05.10 |
MySQL 데이터 타입 (0) | 2010.04.30 |
MySQL 날짜 / 시간 데이터 타입 (0) | 2010.04.30 |
mysql_query (0) | 2010.04.27 |