1

次のコードがあります。私がラベルを付けblock 1block 2ものは一緒に動作しないようですが、一方を取り除くと動作します。使用してチェックするとき、print_r. 私はphpにかなり慣れていないので、どこが間違っているのか誰かが指摘できるかどうか疑問に思っていました. 以前は別の場所で動作していましたが、ファイルを失いました。よろしくお願いします。

PS: 遅かれ早かれ PDO と mysqli に取り掛かるのが良い考えであることは承知しています。でも、まずは基本を押さえたい。

<?php


//Connect to database

$connect = mysql_connect ("localhost","root","password");
$db = mysql_select_db("project");


//Find top 100 most popular images

$pop = mysql_query("


SELECT * FROM users ORDER BY pop DESC LIMIT 2

");

//Define local variables for images to show

//block 1//

$images = array();
while ($row = mysql_fetch_array($pop)) {
    $images[] = $row['image'];
    }

//block2//

$links = array ();
while ($row = mysql_fetch_array($pop)){
$links[] = $row['username'];
}

?>
4

4 に答える 4

4

mysql_data_seekは動作します:

$images = array();
while ($row = mysql_fetch_array($pop)) {
    $images[] = $row['image'];
}

mysql_data_seek( $pop, 0 );

$links = array ();
while ($row = mysql_fetch_array($pop)){
    $links[] = $row['username'];
}

ただし、問題に対するより良い/よりクリーンな解決策は、最初のループ中に両方の値をそれぞれの配列に入れることです。

$links = array();
$images = array();
while ($row = mysql_fetch_assoc($pop)) {
    $images[] = $row['image'];
    $links[] = $row['username'];
}

または、さらにクリーン - 配列に配列を追加します。

$avatars = array();
while ($row = mysql_fetch_assoc($pop)) {
    array_push(
        $avatars, 
        array('image' => $row['image'], 'username' => $row['username'])
    );
}

var_dump($avatars);
于 2012-12-08T12:06:05.887 に答える
1

まず、新しいコードで関数を使用しないでくださいmysql_*。それらはもはや維持されておらず、非推奨プロセスが開始されています。赤いボックスが見えますか? 代わりに準備済みステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事は、どちらを決定するのに役立ちます。PDO を選択する場合は、ここに良いチュートリアルがあります。

mysql_data_seek($pop, 0)2 つのループの間で試すwhileか、コードを次のように置き換えます。

$images = array();
$links = array();
while ($row = mysql_fetch_array($pop)) {
    $images[] = $row['image'];
    $links[] = $row['username'];
}
于 2012-12-08T12:05:50.120 に答える
0

最初のブロックで結果セット全体を既に繰り返し処理しているため、次のようにして、コードの 2 つのブロック間で結果セットの先頭へのポインターを再度シークする必要があります。

mysql_data_seek($pop, 0);
于 2012-12-08T12:09:23.267 に答える
-2

構文が間違っています。

while ($row = mysql_fetch_array($pop, MYSQL_ASSOC))
于 2012-12-08T12:14:21.950 に答える