"mysql_fetch_row"를 사용하여 데이터베이스에서 결과를 검색하고 PHP 및 mysqli를 사용하여 배열에 삽입하시겠습니까?
문제
여러 행에서 데이터를 검색한 다음 결과를 열거형 배열에 삽입해야 합니다. 그런 다음 "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)를 사용하기 만하면 대부분의 상황에서는 연관 배열을 사용하기가 훨씬 간단합니다.