'DB'에 해당되는 글 48건

  1. 2010.05.31 mysql 접속 여부 확인 및 에러
  2. 2010.05.31 mysql_fetch 계열 함수
  3. 2010.05.10 php mysql 연동 함수
  4. 2010.05.10 mysql_affected_rows, mysql_num_rows 차이
  5. 2010.04.30 MySQL 데이터 타입
  6. 2010.04.30 MySQL 날짜 / 시간 데이터 타입
  7. 2010.04.27 mysql_query
  8. 2010.04.27 mysql_result, mysql_fetch_row, _array

mysql 접속 여부 확인 및 에러

DB/MySQL 2010. 5. 31. 13:18

<?php

$conn 
mysql_connect("localhost", "mysql_user", "mysql_password");

if (!
$conn) {
    echo 
"Unable to connect to DB: " mysql_error();
    exit;
}
  
if (!
mysql_select_db("mydbname")) {
    echo 
"Unable to select mydbname: " mysql_error();
    exit;
}

$sql "SELECT id as userid, fullname, userstatus 
        FROM   sometable
        WHERE  userstatus = 1"
;

$result mysql_query($sql);

if (!
$result) {
    echo 
"Could not successfully run query ($sql) from DB: " mysql_error();
    exit;
}

if (
mysql_num_rows($result) == 0) {
    echo 
"No rows found, nothing to print so am exiting";
    exit;
}

// While a row of data exists, put that row in $row as an associative array
// Note: If you're expecting just one row, no need to use a loop
// Note: If you put extract($row); inside the following loop, you'll
//       then create $userid, $fullname, and $userstatus
while ($row mysql_fetch_assoc($result)) {
    echo 
$row["userid"];
    echo 
$row["fullname"];
    echo 
$row["userstatus"];
}

mysql_free_result($result);

?>

[출처] php 함수 - mysql_fetch_assoc|작성자 개발자

추가 - $conn = mysql_connect("localhost""mysql_user""mysql_password") or die ("접속 할 수 없습니다.");

'DB > MySQL' 카테고리의 다른 글

group by, having, inner join  (0) 2010.06.28
에러 코드 모음  (0) 2010.06.17
mysql_fetch 계열 함수  (0) 2010.05.31
php mysql 연동 함수  (0) 2010.05.10
mysql_affected_rows, mysql_num_rows 차이  (0) 2010.05.10
:

mysql_fetch 계열 함수

DB/MySQL 2010. 5. 31. 13:03

php에서 mysql 테이블에 저장되어 있는 값을 query를 통해 불어온 후 그 값을 바로 사용 가능한가?

 

대답은 No..

 

사용 할 수 있는 형태로 변환을 해줘야겠죠..

 

여기서 사용하는 것이 mysql_fetch_어쩌구() 함수들입니다..

 

아래와 같은 테이블이 있다고 합니다..

 

 

1. mysql_fetch_array() - 이 함수는 결과를 배열로 뽑아내는데, 번호호 된 배열과 테이블 필드 이름으로 된 배열, 두 가지를 동시에

                                            생성합니다.

 

$query = "SELECT * FROM comment ORDER BY id DESC";

$resultID = mysql_query($query, $linkID) or die("Data not fouond");

$row = mysql_fetch_array($resultID);

 

이렇게 php코드들을 작성하시겠죠?

그럼 $row['ID']  에도 1,2,3,4,5, $row[1]에도 1,2,3,4,5가 저장이 되겠죠..

 

2. mysql_fetch_assoc() - 이 함수는 필드 이름으로 된 배열만 생성합니다..

$row = mysql_fetch_assoc($resultID);

 

이렇게 하면 $row['ID'] 에 1,2,3,4,5가 저장이 됩니다.. $row[1] 하면 안되겠죠?

php가 서버에서 사용하는 함수니까 db양이 많다면 assoc를 써주면 서버가 좀 덜 힘들어하겠네요..^^

3. mysql_fetch_row() - 이 함수는 숫자로 된 배열로만 생성합니다..

$row = mysql_fetch_row($resultID);

 

$row[1]에 1,2,3,4,5가 저장이 됩니다..

 

※ 참고로 속도는 3 > 2 > 1 입니다..당연히...근데 별 차이 없죠..

[출처] mysql_fetch 관련 함수|작성자 Elisa

'DB > MySQL' 카테고리의 다른 글

에러 코드 모음  (0) 2010.06.17
mysql 접속 여부 확인 및 에러  (0) 2010.05.31
php mysql 연동 함수  (0) 2010.05.10
mysql_affected_rows, mysql_num_rows 차이  (0) 2010.05.10
MySQL 데이터 타입  (0) 2010.04.30
:

php mysql 연동 함수

DB/MySQL 2010. 5. 10. 14:01

mysql의 연결 및 종류


mysql을 연결하는 함수로는 mysql_connect()함수, 연결을 종류하는 함수는 mysql_close()함수

int mysql_connect("localhost","root","apmsetup")

                             ↳유저이름  ↳페스워드

데이터베이스 연결함수

mysql 내부에 존재하는 데이터베이스와 연결하는 함수가 mysql_select_db()함수

mysql_select_db(디비명,$connect)


mysql의 데이터 조작 함수들

-데이터베이스에서 데이터들을 여러 가지 조건에 맞게 검색해서 php 프로그램 내부로 가져오고, 그 결과를 프로그래밍에 맞게 가공하는 작업


mysql_affected_rows() 함수

테이블 내부의 레코드가 변경되었을 경우 변경된 레코드의 개수를 리턴하는 함수

int mysql_affected_rows($connect)


mysql_change_user() 함수

현재 연결된 데이터베이스의 사용자를 변경하는 함수

inr mysql_change_usr(유저이름, 페스워드, string database, $connect)

                                (string=일련의 문자들이 모여서 하나의 데이터로 취급되는 것)

mysql_create_db() 함수                                       

php 내부에서 새로운 데이터베이스를 생성하는 명령어이다.

int mysql_create_db(디비명, $connect)


mysql_data_seek() 함수

sql 문이 수행된 결과를 일종의 포인터로 접근하기 위한함수

int mysql_data_seek(int result_identifier, int row_number)

                                         (int= $)

mysql_db_name() 함수

현재 연결된 데이터베이스 이름의 리스트를 출력하는 함수

int mysql_db_name(int result, int row, mixed field)


mysql_db_query() 함수

데이터베이스 연결과 sql 문의 query 실행을 하나의 함수로 합쳐 놓은 기능제공

int mysql_db_query(string database, string query, $connect)


mysql_errno() 함수

mysql을 실행하다가 오류가 발생하는 것을 처리하기 위해 사용하는 함수. 처리중에 오류가 발생하면 이미 정의되어 있는 에러 메시지에 대한 에러 코드를 리턴한다. 만약 에러가 없으면 0을 리턴한다.

int mysql_errno($connect)


mysql_error() 함수

mysql_errno() 함수와 동일한 기능을 제공하지만 리턴값이 숫자가 아닌 문자열이다.

string mysql_error($connect)


mysql_fetch_array() 함수

sql 문의 수행 결과를 참조 배열로 리턴하는 기능

array mysql_fetch_array(int resylt)

                         ↳$result

mysql_fetch_field() 함수

sql 문의 결과에 대한 필드 정보를 출력하는 함수

object mysql_fetch_field(int result)

리턴값은 object이며, 그에대한 속성값은 ->

 name : 필드의 이름

 table : 필드가 속해있는 테이블의 이름

 max_length : 필드의 최대 길이

 not_null : 필드가 null 이 아니면 1 , null 이면 0

 primary_key : 필드가 primary key 이면 1, 아니면 0

 unique_key : 필드가 unique key 이 아니면 1 , 아니면 0

 multiple_key : 필드가unique key 이 아니면 1 , unique key 이면 0

 numeric : 필드가 numeric이면 1, 아니면 0

 blob : 필드가 blob이면 1, 아니면 0

 type : 필드의 데이터형

 unsigned : 필드가 unsigned이면 1, 아니면 0

 zerofill : 필드가 zero-fill 이면 1, 아니면 0


mysql_fetch_lengths() 함수

sql 문의 결과에 대해 각각의 필드의 길이를 배열 형태로 리턴하는 함수

array mysql_fetch_lengths(int result)


mysql_fetch_object() 함수

sql 문의 결과를 object 형태로 리턴하는 함수

object mysql_fetch_object(int result)


mysql_fetch_row() 함수

리턴된배열을 참조 배열 형태로는 사용할 수가 없다는 점이다.

array mysql_fetch_row(int result)



mysql_field_flags() 함수

필드들의 속성들을 하나의 문자열로 리턴하는 기능

단, 필드의 속성이 하나의 문자열로 출력되기 때문에 explode()함수를 사용하여 각각의 속성들을 분리하여 처리해야 한다.

string mysql_field_flage(int result, int field_offset)

                         ex)$result, $1

mysql_field_name() 함수

sql 문의 실행 결과에서 피라미터로 넘겨받은 필드의 위치에 대한 필드 이름을 리턴하는 기능

string mysql_field_name(int result, int field_index)

                                   ex)$result, $1

mysql_field_len() 함수

특정한 필드의 길이를 리턴하는 기능

int mysql_field_len(int result, int field_offset)


mysql_field_seek() 함수

sql 문의 결과에 대해 주어진 field_offset 만큼 포인터를 이동시키는 명령어

int mysql_field_seek(int result, int field_offset)


mysql_field_table() 함수

특정 필드의 테이블 이름을 리턴하는 함수

string mysql_field_table(int result, int field_offset)


mysql_field_type() 함수

sql 문의 결과에 대해 특정 필드의 타입을 리턴한다.

string mysql_field_type(int result, int field_offset)


mysql_free_result() 함수

sql 문의 결과로 할당되어 있는 메모리를 해제하는 기능을 한다. 하지만, 실제 사용할 때는 php의 코드 수행이 종료되면 자동적으로 할당된 메모리가 해제되므로 굳이 사용할 필요는 없다.

int mysql_free_result(int result)


mysql_list_dbs() 함수

현재 연결되어 있는 mysql server에서 사용 가능한 데이터베이스의 이름을 리스트 형태로 리턴하는 기능

int mysql_list_dbs($connect)


mysql_list_fields() 함수

sql 문을 사용하여 테이블안의 필드들에 대한 데이터와 필드정보들을 fetch 한 것과는 달리 단지 연결만으로도 해당 데이터베이스안의 필드들에 대한 정보를 얻을수 있다.

mysql_list_fields(디비명, 테이블명, $connect)


mysql_list_tables() 함수

연결된 데이터베이스에서 사용가능한 테이블의 리스트를 출력하는 기능을 한다.

mysql_list_tables(디비명, $connect)


mysql_num_fields() 함수

sql 문의 수행 결과에 추출한 필드의 개수를 린턴하는 기능을 한다.

mysql_num_fields(int result)


mysql_num_rows() 함수

sql 문의 수행결과에 추출한 레코드의 개수를 리턴하는 기능을 한다.


mysql_pconnect() 함수

mysql server와 php 를 연결하는데 사용하는 함수.

int mysql_pconnect("localhost","root","apmsetup")

mtsql_connect() 함수와 차이점이 있다.

1. 같은 호스트에서 하나이상의 연결을 시도하는 경우에 mysql_pconnect()함수를 사용한다면 이함수는 가장 먼저 연결된 연결 식별자(link identifier)를 리턴한다.

다시말해서, mysql_connect() 함수가 호스트와는 상관없이 연결될 때마다 서로 다른 연결 식별자를 리턴하는 데 반해 mysql_pconnect()는 같은 호스트에서 연결을 시도했다면 동일한 연결 식별자를 리턴한다.

2. mysql_connect()로 연결된 연결 상태는 스크립트가 종료하면 mysql_close() 함수를 사용하지 않아도 자동적으로 종료가 된다. 그러나 mysql_pconnect() 함수로 연결한 경우에는 스크립트가 종료되었다고 하더라도 자동 종료하지 않고 연결 상태가 졔속 유지된다.


mysql_query() 함수

sql 문을 mysql server로 전송하는 함수

int mysql_query(string query, $connect)


mysql_tablename() 함수

연결된 데이터베이스에서 사용 가능한 테이블의 이름을 문자열 형태로 리턴하는 함수

string mysql_tablename(int result, int i)

'DB > MySQL' 카테고리의 다른 글

mysql 접속 여부 확인 및 에러  (0) 2010.05.31
mysql_fetch 계열 함수  (0) 2010.05.31
mysql_affected_rows, mysql_num_rows 차이  (0) 2010.05.10
MySQL 데이터 타입  (0) 2010.04.30
MySQL 날짜 / 시간 데이터 타입  (0) 2010.04.30
:

mysql_affected_rows, mysql_num_rows 차이

DB/MySQL 2010. 5. 10. 10:06

mysql_affected_rows

mysql_affected_rows -- 최근 MySQL 작업으로 처리된 행(row) 개수를 얻음

설명

int mysql_affected_rows ( [int link_identifier])

mysql_affected_rows()는 link identifier로 접속되어 있는 서버에서

최근 실행된 INSERT, UPDATE, DELETE 질의로 처리된 행의 개수를 돌려준다.

만약 link identifier 인자를 생략하면, 최근 열려진 link를 사용한다.

마지막 질의가 WHERE 절이 없는 DELETE 질의라면, 테이블의 모든 레코드가 삭제되더라도 이 함수는 0값을 돌려준다.

이 함수는 SELECT 문에는 동작하지 않으며, 레코드가 수정되는 경우에만 동작한다.

SELECT 구문으로부터 돌려받은 줄의 개수를 얻으려면, mysql_num_rows()를 쓰면 된다.

 

 

mysql_num_rows

mysql_num_rows -- 결과로부터 열 개수를 반환

설명

int mysql_num_rows ( int result)

mysql_num_rows() 함수는 결과셋으로부터 열의 개수를 반환한다.

이 함수는 SELECT절에서 반환된 결과셋만 사용이 가능하다.

INSERT, UPDATE, DELETE로부터 열의 개수를 얻으려면 mysql_affected_rows()를 사용하면 된다.

예 1. mysql_num_rows 예제 (crubel@trilizio.org 제공) ()

<?php
$conn
= mysql_connect("hostaddress", "username", "password");
mysql_select_db("database",$conn); // needed if you have m,ultiple db's
$Resultfornummembers = mysql_query("SELECT * FROM Accounts",$conn);
$NumMembers = mysql_num_rows($Resultfornummembers);
echo
"$NumMembers Members";
?>

'DB > MySQL' 카테고리의 다른 글

mysql_fetch 계열 함수  (0) 2010.05.31
php mysql 연동 함수  (0) 2010.05.10
MySQL 데이터 타입  (0) 2010.04.30
MySQL 날짜 / 시간 데이터 타입  (0) 2010.04.30
mysql_query  (0) 2010.04.27
:

MySQL 데이터 타입

DB/MySQL 2010. 4. 30. 13:00

MySQL 데이터베이스에는 크게 다음과 같은 세 가지 데이터 타입이 있다.
===========================================================
데이터타입 내용                  예제
-----------------------------------------------------------
숫자형     숫자를 저장하는 필드  TINYINT, INT, FLOAT
-----------------------------------------------------------
문자형     문자를 저장하는 필드  CHAR, VARCHAR, TEXT, ENUM
-----------------------------------------------------------
날짜형     날짜를 저장하는 필드  DATE, DATETIME, TIMESTAMP
===========================================================


MySQL 데이터 타입의 모든 종류를 외울 필요는 없다.
그러나, 다음의 네 가지 데이터 타입은 상당히 많이 사용되므로 꼭 익혀둘것

INT : 4bytes 정수를 저장할때 사용
CHAR(n) : 문자의 수가 n 개인 문자열을 저장할때 사용
VARCHAR(n) 문자의 수가 최대 n 개인 문자열을 저장할때 사용
TEXT : 문자의 수가 최대 65535 개인 문자열을 저장할때 사용

주의: char 타입은 무조건 n 길이만큼을 차지하고, 출력시에도 n 길이로 체크되지만, varchar 은 실제로 들어있는 문자길이만큼 인식된다.
또한, int 형의 경우, 앞에 0 을 붙여 저장해도 0 이 없어지고, 첫자리는 0 이 아닌 숫자가 나올때까지 0 이 없어진다.

다음은 숫자형, 날짜형, 그리고 문자형의 데이터 타입을 정리해둔 표이다.

숫자형 데이터 타입

=====================================================================================
데이터타입   설명
-------------------------------------------------------------------------------------
TINYINT   가장 작은 숫자형으로 부호가 있는 경우에는 -128 ~ 127,
          부호가 없는 경우에는 0 ~ 255 까지 데이터를 다룰 수 있다.
          저장할때 필요한 용량은 1바이트이다.
-------------------------------------------------------------------------------------
SMALLINT  부호가 있는 경우에는 -32768 ~ 32767,
          부호가 없는 경우에는 0 ~ 65535 까지 다룰 수 있으며,
          저장할때 필요한 용량은 2바이트이다.
-------------------------------------------------------------------------------------
MEDIUMINT 부호가 있는 경우에는 -8388608 ~ 8388607,
          부호가 없는 경우에는 0 ~ 16777215 까지 데이터를 다룰 수 있으며,
          저장할때 필요한 용량은 3바이트이다.
-------------------------------------------------------------------------------------
INT       일반적으로 사용하는 숫자형으로
          부호가 있는 경우에는 -2147483648 ~ 2144483647,
          부호가 없는 경우에는 0 ~ 4294967295 까지 데이터를 다룰 수 있으며,
          저장할때 필요한 용량은 4바이트이다.
-------------------------------------------------------------------------------------
INTEGER   int 와 같이 사용한다.
          (int 와 같은 뜻인듯하며, 이름만 달리 사용)
-------------------------------------------------------------------------------------
BIGINT    부호가 있는 경우에는 -922337036854775808 ~ 922337036854775807,
          부호가 없는 경우에는 0 ~ 18446744073709551615 까지 데이터를 다룰 수 있으며,
          저장할때 필요한 용량은 8바이트이다.
-------------------------------------------------------------------------------------
FLOAT     최소값 +_1.175494351E-38 ~ 최대값 +_3.402823466E_38 까지 지원,
          4바이트의 크기를 가진다.
-------------------------------------------------------------------------------------
DOUBLE    최소 ±1.7976931348623157E-308, 최대 ±2.2250738585072014E+308 이며,
          저장할때 필요한 용량은 8바이트이다.
-------------------------------------------------------------------------------------
DECIMAL   소수를 저장하지만 내부적으로는 문자 형태로 저장되는 타입이다.
          예를들어 3.141592 의 경우, 3 이 char 하나의 공간에 저장된다.
=====================================================================================

 


문자형 데이터 타입
=====================================================================================
데이터타입  설명
-------------------------------------------------------------------------------------
CHAR       char(0) 도 지원하며,
           실제값이 M보다 작을 때 남는 자릿수만큼 공백을 붙여서 저장한다.
           1부터 최대 255 의 자릿수를 지원하며, 지정한 용량만큼 바이트를 사용.
-------------------------------------------------------------------------------------
VARCHAR    지정할 수 있는 길이는 1부터 255까지이며,
           지정한 길이보다 작은 데이터를 저장할때 필요한 길이만큼 저장된다.
           char 형보다 기억장치를 효율적으로 사용할 수 있다. 지정한용량+1바이트 사용.
-------------------------------------------------------------------------------------
TINYBLOB   최대 255개의 문자를 저장. 지정한 용량+1바이트(L < 2^8 -1) 를 사용.
-------------------------------------------------------------------------------------
TINYTEXT   tinyblob 와 같이 사용(이름만 다른듯)
-------------------------------------------------------------------------------------
BLOB       최대 65535 개의 문자를 저장. 지정한 용량+2바이트(L < 2^16 -1)의 용량 사용.
-------------------------------------------------------------------------------------
TEXT       blob 와 같이 사용(이름만 다른듯)
-------------------------------------------------------------------------------------
MEDIUMBLOB 최대 16777215 개의 문자를 저장. 지정한 용량+3바이트(L < 2^24 -1) 를 사용.
-------------------------------------------------------------------------------------
MEDIUMTEXT mediumblob 와 같이 사용(이름만 다른듯)
-------------------------------------------------------------------------------------
LONGBLOB   최대 429496729 개의 문자를 저장. 지정한 용량+4바이트(L < 2^32 -1) 를 사용.
-------------------------------------------------------------------------------------
LONGTEXT   longbolb 와 같이 사용(이름만 다른듯)
-------------------------------------------------------------------------------------
ENUM       문자 형태인 value 를 숫자로 저장.
           value 중에 하나만 저장하며, value 가 255 이하인 경우에는 1바이트,
           65535 이하인 경우에는 2바이트를 사용.
=====================================================================================

 


날짜형 데이터 타입
PHP 의 날짜 및 시간 관련 함수와 비슷하다.
=====================================================================================
DATE      '1001-01-01' 부터 '9999-12-31' 까지의 값이 들어갈 수 있으며,
          저장할때 3바이트가 필요. 'YYYY-MM-DD' 와 같은 형식.
-------------------------------------------------------------------------------------
DATETIME  날자와 시간을 같이 저장하며,
          '1001-01-01 00:00:00' 부터 '9999-12-31 23:59:59' 까지의 값을 다루고,
          8바이트가 필요.
          'YYYY-MM-DD HH:MM:SS' 와 같은 형식.
-------------------------------------------------------------------------------------
TIMESTAMP '1970-01-01 00:00:00' 이후부터 초를 숫자로 저장하는 자료형으로,
          4바이트가 필요.
          약 40억초를 저장할 수 있으므로 2037년까지의 값을 다룰 수 있다.
-------------------------------------------------------------------------------------
TIME      '-838:59:59' 에서 '838:59:59' 의 값을 다루며,
          3바이트를 사용.
          HH:MM:SS 와 같은 형식
-------------------------------------------------------------------------------------
YEAR      연도만 저장하는 자료형이다.
          year(n)? 와 같은 형식.
          n 은 2와 4를 지정할 수 있으며, 2인 경우에 값의 범위는 70 에서 69,
          4인 경우에는 1970 에서 2069 이다.
          1바이트를 사용.
=====================================================================================

'DB > MySQL' 카테고리의 다른 글

php mysql 연동 함수  (0) 2010.05.10
mysql_affected_rows, mysql_num_rows 차이  (0) 2010.05.10
MySQL 날짜 / 시간 데이터 타입  (0) 2010.04.30
mysql_query  (0) 2010.04.27
mysql_result, mysql_fetch_row, _array  (0) 2010.04.27
:

MySQL 날짜 / 시간 데이터 타입

DB/MySQL 2010. 4. 30. 11:55

MySQL 의 날짜 / 시간 데이터 타입에는 다음의 다섯 종류가 있다. (5.1X 베이스로 설명)
  • DATE
  • DATETIME
  • TIMESTAMP
  • TIME
  • YEAR

  1. DATE
    날짜정보를 가짐.
    범위는 "1000-01-01" ~ "9999-12-31"
    표시 형식(포맷)은 "YYYY-MM-DD"
    필요 기억용량: 3바이트
  2. DATETIME
    날짜와 시간 정보를 가짐.
    범위는 "1000-01-01 00:00:00" ~ "9999-12-31 23:59:59"
    표시 형식(포맷)은 "YYYY-MM-DD HH:MM:SS"
    필요 기억용량: 8바이트
  3. TIMESTAMP
    MySQL 버젼과 서버의 SQL 실행모드에 따라 동작이 다름.
    범위는 "1970-01-01 00:00:01" UTC ~ 2037 년 도중까지.
    타임스탬프 값은 "1970-01-01 00:00:00" UTC 부터 시작하는 초수를 나타냄.
    0 값은 "0000-00-00 00:00:00" 값을 나타냄.
    따라서 "1970-01-01 00:00:00" 부터 0 초 라는 의미를 나타내기는 하지만 "1970-01-01 00:00:00" 를 표현 할 수 없음.
    TIMESTAMP 컬럼의 자동업데이트 조건
    • INSERT 또는  LOAD DATA INFILE 스테이트먼트에서 컬럼을 지정하지 않는 경우
    • UPDATE 스테이트먼트 같은 컬럼의 변경에서 명시적으로 컬럼이 지정되지 않는 경우
    • TIMESTAMP 컬럼에 NULL 값을 지정한 경우
    필요 기억용량: 4바이트
  4. TIME
    시각정보
    범위는 "-838:59:59" ~ "838:59:59"
    표시 형식(포맷)은 "HH:MM:SS"
    필요 기억용량: 3바이트
  5. YEAR
    2자리 , 혹은 4자리포맷으로 표시.
    디폴트로 4자리 포맷을 사용함.
    4자리 포맷일 경우 범위는 1901 ~2155 , 0000 값을 가짐.
    2자리 포맷일 경우 범위는 70 ~69 의 값을 가짐. 70~ 00 까지는 1970 년부터 2000년 까지의 값 , 그리고 01 ~ 69 까지는 2001 년 부터 2069년까지의 값.
    필요 기억용량: 1바이트

출처 - http://breakpoint.tistory.com/86

'DB > MySQL' 카테고리의 다른 글

php mysql 연동 함수  (0) 2010.05.10
mysql_affected_rows, mysql_num_rows 차이  (0) 2010.05.10
MySQL 데이터 타입  (0) 2010.04.30
mysql_query  (0) 2010.04.27
mysql_result, mysql_fetch_row, _array  (0) 2010.04.27
:

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
: