"mysql_fetch_row"를 사용하여 데이터베이스에서 결과를 검색하고 PHP 및 mysqli를 사용하여 배열에 삽입하시겠습니까?

StackOverflow https://stackoverflow.com/questions/627036

문제

여러 행에서 데이터를 검색한 다음 결과를 열거형 배열에 삽입해야 합니다. 그런 다음 "for" 루프를 사용하여 이를 에코할 수 있습니다.

나는 이것을 가지고 있습니다 (나는 이미 데이터베이스에 연결했습니다):

$genres_sql = 'SELECT genreID FROM genres WHERE imdbID = ?';
if ($stmt->prepare($genres_sql)) {
    // bind the query parameters
    $stmt->bind_param('i', $movieid);
    // bind the results to variables
    $stmt->bind_result($genre);
    // execute the query
    $stmt->execute();
    $stmt->fetch();
}

여기서 첫 번째 결과(행)를 변수로 가져옵니다.하지만 다음을 사용하여 각 결과를 에코할 수 있도록 열거형 배열에 삽입해야 합니다.

if (!empty($genre)) {
for ($i = 0; $i + 1 < count($genre); $i++)
{
    echo $genre[$i].', '; 
}
echo $genre[$i];
}

다음과 같이 에코됩니다. $genre[0], $genre[1], $genre[2], 마지막 것까지 계속됩니다.

나는 그것을 안다 mysql_fetch_row 작업은 할 수 있지만 프로그래밍이 처음이라 아주 자세한 설명이 필요한데..감사합니다!!

도움이 되었습니까?

해결책

다음을 사용하여 반복할 수 있습니다. MySQLi_Statement::fetch 방법:

$stmt->bind_result($genre);
$stmt->execute();
$genres = array();
while ($stmt->fetch()) {
    $genres[] = $genre;
}

원래 fetch 반복자를 제공합니다. while 각 결과를 반복하는 데 사용할 수 있습니다.변수는 bind_result (이 경우 $genre)은 반복할 때마다 다시 할당됩니다.

다른 팁

나는 MySQLI에 100% 익숙하지 않지만 이런 일을하는 많은 PGSQL 명령을 가지고 놀았으며 당신이 찾고있는 것이 무엇이라고 생각합니다. mysqli-result-> fetch_assoc. 이것은 당신이 그렇게 쉽게 반복 할 수있는 연관 배열을 생성합니다.

while ($row = $result->fetch_assoc()) {
    printf ($row["genre"]);
}

편집하다: 알 니 타크 이 답변에 대한 의견보다 더 나은 설명과 관련이 있습니다.

이것은 실제로 질문에 대한 답이 아니지만 배열을 쉼표로 구분 된 목록으로 인쇄하려면 다음을 사용하는 것이 좋습니다. 묵시 루프에 대한 명령 :

//Replaces the for loop in the question
echo implode(', ', $genre);

... 마지막 요소 뒤에 쉼표가 없다는 점을 제외하고.

@mykroft 답장을 완료하기 위해서는 실제로 열거 된 배열을 원한다면 $ result-> fetch_array (mysqli_num)를 사용하기 만하면 대부분의 상황에서는 연관 배열을 사용하기가 훨씬 간단합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top