'DB/MySQL'에 해당되는 글 22건

  1. 2010.04.27 mysql_query
  2. 2010.04.27 mysql_result, mysql_fetch_row, _array

mysql_query

DB/MySQL 2010. 4. 27. 10:37

형식 : mysql_query ( string $query [, resource $link_identifier ] )
설명 : - mysql_query()link_identifier 로 지정한 데이터베이스 서버에 하나의 질의를 전송합니다.
          - 다중 질의는 지원하지 않습니다)
      - $query  : 문자열은 ; 로 끝나지 않아야 합니다.
         - $link_identifier : MySQL 연결. 지정하지 않으면 mysql_connect()로 연 마지막 연결을 사용합니다.
           연결이 없으면, 인수 없이 mysql_connect()를 호출하여 연결을 만듭니다.
           연결이 성립되지 않으면 E_WARNING 등급의 오류를 생성합니다.

예1) 쿼리문에 오류가 있어 실패 $result 에는 false 가 들어감.
$result
= mysql_query ("SELECT * WHERE 1=1") or die ("잘못된 질의를 실행했습니다!!");

예2) 쿼리문에 오류가 있어 실패 $result 에는 false 가 들어감.
$result mysql_query('SELECT * WHERE 1=1');
if (!
$result) {
    die(
'Invalid query: ' mysql_error());
}


SELECT 일때 쿼리문만 형식에 맞다면 결과 값이 있던 없던 $result 에는 false 가 아닌 resource 가 들어가고
결과로 나온 행이 몇개 인지 확인 하려면 mysql_num_rows() 함수를 사용해서 확인 하면 된다.
$result mysql_query("SELECT name from member WHERE id='kbs'");
echo mysql_num_rows($result); --> 결과로 나온 행의 숫자를 알 수 있음.


INSERT, UPDATE, DELETE 일때 쿼리문만 맞다면 $result 에는 true 가 들어가고 몇개의 행이 영향을 받았는지 알려면
mysql_affected_rows() 함수를 사용해서 확인 하면 된다.

<?php
$link 
mysql_connect('localhost''mysql_user''mysql_password');
if (!
$link) {
    die(
'Could not connect: ' mysql_error());
}
mysql_select_db('mydb');

/* this should return the correct numbers of deleted records */
mysql_query('DELETE FROM mytable WHERE id < 10');
printf("Records deleted: %d\n"mysql_affected_rows());

/* with a where clause that is never true, it should return 0 */
mysql_query('DELETE FROM mytable WHERE 0');
printf("Records deleted: %d\n"mysql_affected_rows());
?>

'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_result, mysql_fetch_row, _array  (0) 2010.04.27
:

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
: