mysql_result, mysql_fetch_row, _array

DB/MySQL 2010. 4. 27. 09:54

int 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

email

sex 

milage 

level 

 김영미

guncat 

guncat@duam.net 

2800 

 길수현

 suhyun

suhyun@naver.com 

 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>
</html>

[출처] mysql_result 함수|작성자 로그아웃


[추가]

속도면에서...

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
: