2012-07-10 4 views
1

다양한 우편 정보 목록이 있습니다. 이 데이터는 "postal_codes"라는 mysql 테이블 내에 있습니다.PHP/MYSQL - Mysqli Prepared Statements - 테이블 데이터를 가져 와서 각 행을 로컬 배열에 추가 하시겠습니까?

이 테이블의 각 행을 스크립트에 사용할 로컬 배열에 추가하고 싶습니다.

내가 직면 한 문제는 내가 while 루프 내에서 정의되지 않은 변수와 관련된 오류를 계속 가져 오는 것입니다. 여기

내가 지금까지 가지고있는 코드 :

// Get postal info and make into array 
$postalCodes[] = array(); 
if ($stmt = $link->prepare("SELECT id, suburb, boxCode, streetCode, townName FROM postal_codes")) { 

    if (!$stmt->execute()) 
    { 
     printf("failed to execute"); 
    } 
    if (!$stmt->bind_result($id, $suburb, $boxCode, $streetCode, $townName)) 
    { 
     printf("failed to bind params"); 
    } 
    if (!$stmt->store_result()) 
    { 
     printf("failed to store result"); 
    } 
    while ($stmt->fetch()) 
    { 
     $postalCodes['id'] += $id; 
     $postalCodes['suburb'] += $suburb; 
     $postalCodes['boxCode'] += $boxCode; 
     $postalCodes['streetCode'] += $streetCode; 
     $postalCodes['townName'] += $townName; 
    } 
    $stmt->close(); 
} 

foreach ($postalCodes as $postalCode) 
{ 
    if ($postalCode['boxCode'] == 5850) 
    { 
     printf("{$postalCode['suburb']}"); 
    } 
} 

수 있었이 코드에 문제가 있거나 나를 더 좋은 방법이 절차를 코딩하는 방법을 제안 기회의 자리로 사람.

이 점에 대한 도움과 통찰력을 주시면 감사하겠습니다.

$postalCodes['id'] += $id; 

자신을 질문 : $postalCodes['id']의 값이이 전화를 처음으로 무엇

+0

그래서 결과를 배열에 바로 복사해야합니까? –

+0

@Kyokasuigetsu Correct. –

+0

왜 사용하고 있습니까? +이 값 중 일부를 추가하려는 이유를 알 수 없습니다. – allen213

답변

2

"오류"아마 당신의 연관 배열로 인해 발생? 여전히 정의되지 않았습니다. 따라서 미리 변수를 초기화하거나 error_reporting()을 통해이 유형의 경고를 끌 수 있습니다.

편집 : 나는 당신이 +=의 의미에 대한 혼란라고 생각

$postalCodes=array(); 
while ($stmt->fetch()) { 
    $postalCodes[] = array('id' => $id, 
     'suburb' => $suburb, 
     'boxCode' => $boxCode, 
     'streetCode' => $streetCode, 
     'townName' => $townName); 
} 
foreach($postalCodes as $postalCode) { 
    // do whatever you need to do 
    // with the associative array, e.g. 
    echo $postcalCode['boxCode']; 
} 

: 당신은 뭔가를하고 싶은 배열 문제

. 배열에 요소를 추가하려면 array[]=something을 사용합니다. 나는 당신이 실제로 mysqli에서 준비된 문을 사용하고 있음을 통보하지 않았다

if ($stmt = $link->prepare("SELECT id, suburb, boxCode, streetCode, townName FROM postal_codes")) 
{ 
    $stmt->execute(); 
    $stmt->bind_result($id, $suburb, $boxCode, $streetCode, $townName); 
    $stmt->store_result(); 
    while($stmt->fetch()) 
    { 
     $postalCodes[] = array("id" => $id, "suburb" => $suburb, "boxCode" => $boxCode, "streetCode" => $streetCode, "townName" => $townName); 
    } 
} 

:

+0

고맙지 만 첫 줄'$ postalCodes [] = array();'가이 값들을 열었을 것이라고 생각했을까요? 그리고 내 사이트는 아직 개발 중이므로 오류보고. 하지만 여전히 그래야만하는 결과가 표시됩니다. –

+1

아니요, 그렇지 않습니다 :) http://php.net/manual/en/language.types.array.php – Doa

+0

링크를 사용해 주셔서 감사합니다. 변수를 올바르게 초기화하는 방법은 무엇입니까? –

3

은 당신이 뭔가를 할 수 있습니다. 나는 준비된 진술을 사용하기 위해 나의 대답을 수정했다.

+0

나는이 변수를 가져 오기 위해'bind_result'를 사용했습니다. 나는 당분간이 기능과 함께 작동하는 해결책을 찾고있다. –

+0

자, 이제 제가 가지고있는 것입니다.하지만 그것을 가져 오기 전에'store_result'를해야합니까? 또한 foreach 루프 내에서 값을 호출하는 방법은 무엇입니까? –

+0

당신이 print_r ($ postalCodes); 귀하의 질문을 편집하십시오. 나는 foreach에서 값을 가져 오는 방법을 추측 할 수있을만큼 충분히 유창하지 않다. 그래서 네 질문에 print_r ($ postalCodes)의 출력을 포함하거나 그냥 여기에 코멘트. –

관련 문제