5

複数の行からデータを取得し、結果を列挙型配列に挿入する必要があるため、「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];
}

これは echo:$genre[0], $genre[1], $genre[2],など、最後のものまで続きます。

私はそれmysql_fetch_rowが仕事をすることができることを知っていますが、私はプログラミングに慣れていないので、非常に詳細な説明が必要です..ありがとう!!

4

4 に答える 4

2

私は mysqli に 100% 精通しているわけではありませんが、この種のことを行う多くの pgsql コマンドで遊んだことがあり、あなたが探しているのはmysqli-result->fetch_assocだと思います。これにより、次のように非常に簡単にループできる連想配列が生成されます。

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

編集: Alnitakは、この回答のコメントよりも優れた説明にリンクしています。

于 2009-03-09T16:50:14.993 に答える
1

これは実際には質問に対する答えではありませんが、配列をカンマ区切りのリストとして出力したい場合は、for ループよりもimplodeコマンドを使用することをお勧めします。

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

...最後の要素の後にコンマがないことを除いて。

于 2009-03-09T17:10:05.477 に答える
1

MySQLi_Statement::fetch次のメソッドを使用してループできます。

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

基本的に、各結果を反復処理するために使用できるfetch反復子を提供します。(この場合は )whileの変数は、反復ごとに再割り当てされます。bind_result$genre

于 2009-03-09T16:46:19.543 に答える