2010-03-03 3 views
0

MySQL 데이터베이스에 테이블 '계정'(id, email, pass)이 있습니다.PHP : mysqli_fetch_assoc가 저장 프로 시저와 작동하지 않습니다.

내가 저장 한 절차 :

function loadAccount($email, $pass) 
{ 
    // connect to DB 
    // ... 
    $query = "CALL LoadAccount('{$email}')"; 

    if ($mysqli->multi_query($query)) 
    { 
    do 
    { 
     if ($result = $mysqli->store_result()) 
     { 
     // Numbered array. 
     while ($row = $result->fetch_array(MYSQLI_NUM)) 
     { 
      printf("%s %s\n", $row[0]); 
     } 

     // Associative array. 
//  while ($row = $result->fetch_array(MYSQLI_ASSOC)) 
//  { 
//   printf("%s\n", $row['pass']); 
//  } 
     $result->free(); 
     } 
     $mysqli->more_results(); 
    } while ($mysqli->next_result()); 
    } 
} 

그래서, 번호가 배열 섹션의 작품,하지만 난 그것을 주석 경우 주석을 연관 배열 섹션 : 여기

DELIMITER $$ 
CREATE PROCEDURE `LoadAccount`(email_p VARCHAR(100)) 
BEGIN 
    SELECT pass FROM account WHERE email = email_p; 
END$$ 
DELIMITER ; 

그리고는 코드입니다 - 페이지가 멈추고 연결이 끊깁니다.

왜 작동하지 않습니까?

+0

이 코드는 작동해야하기 때문에 당황 할 수 있습니다. mysql 서버 로그와 느린 쿼리 로그 (사용 가능한 경우)를보고 표시되는 내용을 볼 수 있습니까? – e4c5

+0

서버 로그에 오류가 표시됩니다. 오류있는 응용 프로그램 이름 : httpd.exe, 버전 : 2.2.14.0, 타임 스탬프 : 0x4ad08a08 오류있는 모듈 이름 : php_mysqli.dll 버전 : 5.2.5.5, 타임 스탬프 : 0x47389d89 예외 코드 :가 0xc0000005 오류 오프셋 : 0x0000000000002474 오류있는 프로세스 ID : 0x1014 애플리케이션은 시간 시작 폴트 : 0x01cabb38919dc683 오류있는 응용 프로그램 경로 : C를 \ apache64 \ bin \ httpd.exe 오류가있는 모듈 경로 : C : \ php \ ext \ php_mysqli.dll 보고서 ID : 64124eed-2731-11df-9c2d-002564f16a19 쿼리 로그를 어떻게 활성화합니까? –

답변

0

음, PHP의 재설치와 같은 이상한 것들에 대한 도움이! 적어도 그것은 이번에했다.

1

오타가 코드 여부에 확실하지만,하지 :

printf("%s\n", $row[pass]); 

가 있어야한다 :

printf("%s\n", $row['pass']); 
+0

아니, 그게 아니야. 루프 안쪽에 아무 것도하지 않아도 멈 춥니 다. 당신은 따옴표가 빠진 것에 대해 맞습니다. –

관련 문제