2009-09-09 7 views

답변

4

mysql_fetch_row() 함수() 그것은 숫자 인덱스/키 배열을 반환을합니다. 일반적으로 다른 두 가지 방법보다 빠릅니다.

mysql_fetch_assoc() 열 이름이 키 인 배열을 반환합니다. mysql_fetch_row()보다 약간 느리다.

mysql_fetch_array() 반환 값은 기본적으로 두 개의 배열을 반환합니다. 하나는 연관 기반 키 인덱스이고 다른 하나는 숫자 인덱스입니다. 어느 메소드를 지정하지 않고 mysql_fetch_array()를 호출하면 (MYSQL_NUM 또는 MYSQL_ASSOC) 항상 double 배열을 반환합니다. mysql_fetch_row() 나 mysql_fetch_assoc()과 비교할 때 상당히 비효율적이다. 결과 유형을 두 번째 매개 변수로 설정할 수 있습니다.

실제로 이러한 방법에는 큰 차이가 없다고 생각합니다.

+0

mysql_fetch_assoc '약간 느림'은 과장입니다. mysql_fetch_row와 거의 같다. fetch_assoc 또는 fetch_object가 일반적으로 가장 명확합니다. – Justin

+0

실제로 이러한 속도 차이는 무시할 수 있습니다 (대부분의 경우). – Sadi

2

실제로 각각의 데이터를 반환하는 방법이 다르므로 질문은 "사용자의 요구에 더 적합합니다"와 비슷합니다. 이 같은

mysql_fetch_row() 반환 배열 :

$row[0]; 

mysql_fetch_assoc() :

$row["table_field"]; 

mysql_fetch_array() :

$row[0]; 
// or 
$row["table_field"]; 

(가) "무거운는"이 옵션을 받아 여기에 fetch_array는, 아마도 때문에 매개 변수를 지정하여 데이터를 연관 또는 숫자 키 배열로 반환해야합니다. 당신은 PHP에서 OOP와 함께 작업하는 경우,이 마지막 옵션 나는 모든 모든 쿼리에 내 필요에 따라 사용할 것, 개인적으로

$row->table_field; 

:하지만,

mysql_fetch_object() :

가이 하나 아마도 "가장 멋지다".

0

그들 중 누구도 본질적으로 다른 것보다 우수하지 않습니다. 그들은 완전히 다릅니다. _assoc()_row() 함수는 mysql_fetch_array()을 호출하는 다양한 방법에 대한 편리한 함수입니다.

the documentation

에서 행이 더 이상없는 경우가 페치 행에 대응하는, 또는 FALSE 문자열의 배열을 반환. 리턴 된 배열 유형 은 result_type이 정의 된 방법에 따라 다릅니다. MYSQL_BOTH (기본값)를 사용하면 연관 및 숫자가 모두 인 배열이 생성됩니다. MYSQL_ASSOC을 사용하면 mysql_fetch_assoc()가 MYSQL_NUM의 연관 색인을 얻습니다. 숫자 인덱스 (mysql_fetch_row() 작동) 만 나타납니다.

2

이는 행 데이터에 액세스하려는 방법에 따라 다릅니다. 당신이 인덱스로 필드 이름을 사용하려면

  • 을 fetch_row 사용, 숫자 인덱스를 사용하고자하는 경우에는 인덱스를 사용할 필요가없는 경우

    • (

    을 fetch_assoc 사용 말하자면 foreach를 통해 행을 전달한다), 또는 상관하지 않는다. fetch_row를 사용하면 약간의 오버 헤드가 발생한다. 환경 설정이 없으면 필드 이름을 사용하는 것이 더 편합니다. 코드를 읽기 쉽게 만드는 경향이 있기 때문입니다.

    fetch_array는 본질적으로 fetch_row와 fetch_assoc을 결합하지 마십시오. 숫자와 결합을 사용하면 코드가 명확하지 않게 될 것입니다. ($ result_type 매개 변수를 MYSQL_BOTH가 아닌 다른 것으로 제공하면 fetch_array를 사용할 수 있지만 적절한 함수를 사용할 수도 있습니다. 코드가 명확하고 간결하지만 더 간결합니다.

    필드 이름을 사용하려면 쿼리에 같은 이름의 필드가 두 개 있지 않은지 확인하십시오. 당신이 할 경우, 당신은 당신의 쿼리에 해당 열의 별칭을 제공해야합니다 (그리고 필드 이름으로 배열을 액세스 할 때 사용)

  • 관련 문제