2009-03-09 9 views
5

私は(私はすでにデータベースに接続されている)私はこれを持っている"mysql_fetch_row"を使用してデータベースから結果を取得し、PHPとmysqliを使用して配列に挿入しますか?

...いくつかの行からデータを取得し、そのように、私はそれをエコーするループ「のために」を使用することができ、列挙配列に結果を挿入する必要があります:

$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]; 
} 

これはエコーされます:最後の1まで$genre[0], $genre[1], $genre[2],などを。

私はmysql_fetch_rowが作業を行うことができることを知って、私は非常に詳細な説明が必要なので、私はプログラミングに新たなんだ... ありがとうございました!!

答えて

1

あなたがループMySQLi_Statement::fetch方法を使用することができる:

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

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

+0

ありがとう、簡単でした。 – Jonathan

2

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

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

EDIT:Alnitakが、私はこの回答のコメントに持っているよりも、より良い説明にリンクしています。

+0

AFAIKでは、 "fetch_assoc"と "execute"を混在させることはできません。前者は "query"によって返される "result set"オブジェクトを必要とし、後者は "statement"オブジェクトで動作します。 – Alnitak

+0

http://stackoverflow.com/questions/627197/mixing-phps-mysqli-data-access-functionsを参照してください。ここで私はこの違いをより完全に探検しようとしました – Alnitak

0

@Mykroftの返信を完了するには、実際には列挙型配列を使用したい場合は、$ result-> fetch_array(MYSQLI_NUM)を使用してください。ただし、連想配列はほとんどの場合使いやすいです。

1

これは本当に質問への答えではありませんが、コンマ区切りのリストとして配列を印刷したい場合は、それがforループよりもimplodeコマンドを使用することをお勧めします:

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

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

+0

素晴らしい、ありがとう... – Jonathan

関連する問題