2012-07-11 3 views
8

일부 코드를 이전 mysql 확장에서 PHP의 mysqli 확장으로 변환 중입니다. 이전에는 MySQL의 확장으로, 나는 테이블의 기본 키를 찾기 위해 다음과 같은 몇 가지 코드를 사용했다 :mysqli를 사용하여 열이 기본 키인지 확인하는 방법은 무엇입니까?

while ($i < mysql_num_fields($result)) { 
    $meta = mysql_fetch_field($result, $i); 
    if ($meta->primary_key == 1){ 
     $primary_key = $meta->name; 
    } 
    $i++; 
} 

$meta->primary_key == 1 매우 편리했다.

은 지금까지 내가 사용 mysqli에 코드로 변환 한 : 물론, 문서 here보고에서 우리가 $meta->primary_key가 mysqli에 존재하지 않는 것을 볼 수 있습니다

while ($i < $result->field_count) { 
    $meta = $result->fetch_field; 
    if ($meta->primary_key == 1){ 
     $primary_key = $meta->name; 
    } 
    $i++; 
} 

. $meta->flags이 있음을 확인했습니다. 이것은 기본 키가있을 때 flags 값이 무엇인지 확신 할 수는 없지만 가장 좋은 추측입니다.

는 아무도 내가 mysqli를 사용하여 테이블에 대한 기본 키 인 열에게 얼마나 알고 있나요?

감사합니다. 당신은 매우 가까웠다

//get primary key 
$primary_key = ''; 
while ($meta = $result->fetch_field()) { 
    if ($meta->flags & MYSQLI_PRI_KEY_FLAG) { 
     $primary_key = $meta->name; 
    } 
} 
+2

"설명''table_name'"쿼리를 실행 하시겠습니까? – Waygood

+0

좋은 점은 DB와는 별도의 트랜잭션이 필요하다는 것입니다. 결과 세트에서 이미 얻은 정보를 사용하는 것을 선호합니다. –

답변

7

, 당신은 flags 속성을해야합니다

편집 는 여기에 몇 가지 작업 코드입니다.

당신이 찾고있는 플래그가 의미 MYSQLI_PRI_KEY_FLAG입니다 :

if ($meta->flags & MYSQLI_PRI_KEY_FLAG) { 
    //it is a primary key! 
} 
:

이 필드를

당신은 같은과 함께이 플래그를 테스트 할 수있는 주요 지표의 일부입니다

당신은 Bitwise AND Operator 여기 &을 사용하고 있습니다.

관련 문제