초보분들에게 유용할까 해서....흠..
이 두 함수는 대개 별 차이점이 없다고 생각할 수 있습니다.
그냥 배열을 정의 하는것이라 생각하고 걍 사용할수도 있을겁니다.
하지만 차이점이 있죠..
다음의 예를 먼저 보시고 차이점이 뭔지 생각해보세요.:)
●Mysql_fetch_row사용 예
<?
$connect=mysql_connect('localhost','user id','password');
mysql_select_db("dbname",$connect);
$query="select num,title,content from board";
$result=mysql_query($query,$connect);
$row=mysql_fetch_row($result);
echo "$row[0],$row[1],$row[2]";
?>
●Mysql_fetch_array사용 예
<?
$connect=mysql_connect('localhost','user id','password');
mysql_select_db("dbname",$connect);
$query="select num,title,content from board";
$result=mysql_query($query,$connect);
$row=mysql_fetch_array($result);
echo "$row[num],$row[title],$row[content]";
?>
위의 두 예제를 보시면 이해가 되시나요..row는 데이터베이스에서 가져온 데이터를 배열로 패치(fetch)할 때 0부터 배열이름을 부여합니다.하지만 array는 정돈된 데이터베이스의 필드이름을 그 값의 key값으로 가져오게 됩니다.
보통 select할 데이터 필드가 적을 경우라면 mysql_fetch_row를 사용해도 상관없지만 만약 select할 데이터 필드가 많다면 mysql_fetch_array를 사용하여 필드 이름을 배열의 key값으로 가져오는것이 훨씬 유리합니다.
만약 select할 필드 값이 많은데 mysql_fetch_row를 사용했다면 어떻게 될까영..후후..
고달프겠졍...하나,두울,세엣,네엣.......열...ㅡㅡ;
특별히 다른경우가 아니라면 mysql_fetch_array함수를 사용하는게 나을것 같네요...
출처 : http://blog.naver.com/apchima
mysql_fetch_array
결과를 필드이름 색인 또는 숫자 색인으로 된 배열로 반환
Description
array mysql_fetch_array( resource result [, int result_type] )
Paremeters
- result
구해진 결과 resource. 이 결과는 mysql_query()에서 불려진 데이터. - result_type
추출될 배열 타입. 상수이며 다음 값을 가질 수 있다.
MYSQL_ASSOC, MYSQL_NUM와 기본값인 MYSQL_BOTH
Return Values
데이터베이스 테이블로부터 가져온 행에 대응되는 배열로 돌려주고, 더이상 가져올 행이 없을 경우 FALSE를 반환한다.
mysql_fetch_array()는 mysql_fetch_row()에서 확장된 함수이다.
결과 배열에 자료가 저장되고 배열의 색인으로 번호가 사용된다.
또한, 배열의 색인으로 테이블의 필드 이름으로도 사용할 수 있다.
결과로 두 개 이상의 동일한 필드 이름을 가진 열이 있다면, 마지막 열이 우선권을 가진다.
동일한 다른 열을 사용하기 위해서는 색인 번호를 이용하거나 질의 문장에서 열의 별명을 주어 이용하여야 한다.
mysql_fetch_array()는 필드 이름으로 된 색인이 추가되지만, mysql_fetch_row() 보다 느려지지는 않는다.
SELECT table1.field AS foo, table2.field AS bar FROM table1, table2
.
/* mysql_fetch_array() with MYSQL_NUM */
mysql_connect( "localhost", "mysql_user", "mysql_password" )
or die( "Could not connect: " . mysql_error() );
mysql_select_db( "mydb" );
$result = mysql_query( "SELECT id, name FROM mytable" );
while ( $row = mysql_fetch_array( $result, MYSQL_NUM ) ) {
printf( "ID: %s Name: %s", $row[0], $row[1] );
}
mysql_free_result( $result );
?>
.
/* mysql_fetch_array() with MYSQL_ASSOC */
mysql_connect( "localhost", "mysql_user", "mysql_password" )
or die( "Could not connect: " . mysql_error() );
mysql_select_db( "mydb" );
$result = mysql_query( "SELECT id, name FROM mytable" );
while ( $row = mysql_fetch_array( $result, MYSQL_ASSOC ) ) {
printf( "ID: %s Name: %s", $row[ "id" ], $row[ "name" ] );
}
mysql_free_result( $result );
?>
.
/* mysql_fetch_array() with MYSQL_BOTH */
mysql_connect( "localhost", "mysql_user", "mysql_password" )
or die( "Could not connect: " . mysql_error() );
mysql_select_db( "mydb" );
$result = mysql_query( "SELECT id, name FROM mytable" );
while ( $row = mysql_fetch_array( $result, MYSQL_BOTH ) ) {
printf( "ID: %s Name: %s", $row[0], $row["name"] );
}
mysql_free_result( $result );
?>
mysql_fetch_row
결과를 숫자색인으로 된 배열로 반환
Description
array mysql_fetch_row( resource result )
Paremeters
- result
구해진 결과 resource. 이 결과는 mysql_query()에서 불려진 데이터.
행(row)에 대응되는 숫자색인으로 된 배열을 반환, 가져올 값이 없을 경우 FALSE를 반환한다.
mysql_fetch_row()는 특정 result identifier로부터 한 행의 데이터를 가져오며, 배열로 얻을 수 있다. 각 결과 열(column)은 0부터 시작하는 숫자색인으로 저장된다.
/* Fetching one row with mysql_fetch_row() */
$result = mysql_query( "SELECT id,email FROM people WHERE id = '42'" );
if ( !$result ) {
echo 'Could not run query: ' . mysql_error();
exit;
}
$row = mysql_fetch_row( $result );
echo $row[0]; // 42
echo $row[1]; // the email value
?>
mysql_fetch_assoc
결과를 필드이름 색인으로 된 배열로 반환
Description
array mysql_fetch_assoc( resource result )
Parameters
- result
구해진 결과 resource. 이 결과는 mysql_query()에서 불려진 데이터.
필드이름의 색인을 가진 배열로 돌려주고, 가져올 행이 없을 경우 FALSE값을 반환한다.
mysql_fetch_assoc()는 mysql_fetch_array()의 두번째 인자로 MYSQL_ASSOC를 사용한 경우과 동일하게 작동한다. 이 방식은 mysql_fetch_array()의 본래의 동작 방법이다.
숫자 색인 방식과 필드이름 색인을 동시에 사용하려면, mysql_fetch_array()를 사용하면 된다.
결과로 동일한 필드 이름을 가진 열(column)이 있다면, 마지막 열이 우선권을 가진다.
동일한 다른 열을 사용하기 위해서는 색인 번호도 추가된 mysql_fetch_array()를 사용한다.
mysql_fetch_assoc()는 필드이름으로 된 색인이 추가되지만, mysql_fetch_row() 보다 느려지지는 않는다.
/* mysql_fetch_assoc() 사용 예 */
$conn = mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db( "mydbname" );
$result = mysql_query( "SELECT id as userid, fullname, userstatus FROM sometable WHERE userstatus = 1" );
while ( $row = mysql_fetch_assoc( $result ) ) {
echo $row["userid"];
echo $row["fullname"];
echo $row["userstatus"];
}
mysql_free_result( $result );
?>
출처 : http://www.oops4u.com
'DB > MY-SQL' 카테고리의 다른 글
[MY-SQL] join (0) | 2011.11.18 |
---|---|
[MY-SQL] 날짜 함수( ADDDATE, DATE_ADD, CURDATE, CURTIME, NOW ) (0) | 2011.11.18 |
[MY-SQL] 현재(오늘)부터 특정일 까지를 구하는 Query문(between, subdate) + 오늘 기준 이번주, 이번달 구하는 Query문 (0) | 2011.11.17 |
[MY-SQL] DB 테이블 연산자 - JOIN 연산자 (두 개 이상 테이블 간의 비교검색) (0) | 2011.11.17 |
[MY-SQL] 서브쿼리 - 두 개 이상의 SQL쿼리 조합하기 (0) | 2011.11.17 |