1

私は現在、以下のようなテーブルを持っています。

ID  adPlacement     filePath    dateAdded   adName  adLink
12  1           Test 1.png  2013-02-12  Test 1  http://www.cuad.coop
13  1           Test 2.png  2013-02-12  Test 2  http://www.google.com

行をランダムに選択し、adName、adLink、および filePath を個別の echo ステートメントでエコーアウトしようとしています。

これが私が今使っているコードです:

$query_adSpot1 = "SELECT * FROM advertisements WHERE adPlacement = 1";
$result = mysql_query($query_adSpot1, $server) or die(mysql_error());
while($row = mysql_fetch_array($result)){
$row = array(
    'adName' => $row['adName'],
    'filePath' => $row['filePath'],
    'adLink' => $row['adLink']
);
$fileLocation = $row;
$fileLocations[] = $fileLocation;   
}
shuffle($fileLocation);
echo $fileLocation[0];

今スクリプトを実行すると、test 2.png、または test 2、またはhttp://www.google.comが書き込まれます。

ランダムな行とは別にエコーできるようにしたいのですが、同じ行に等しくするには別の列が必要です。

echo filePath
echo adName
echo adLink
4

2 に答える 2

1

間違った配列をシャッフルしています。次を使用する必要があります。

shuffle($fileLocations);
                     ^ This is the one with all your values
var_dump($fileLocations[0]);
// will show you an array with 3 elements from the same row in the database

あなたがしているのは、SQLクエリで見つかった最後の行を並べ替えることです.

于 2013-02-12T18:41:45.070 に答える
0

RAND()で機能を使用できますMySQL

$query_adSpot1 = "SELECT * FROM advertisements WHERE adPlacement = 1 ORDER BY RAND() LIMIT 1";
$result = mysql_query($query_adSpot1, $server) or die(mysql_error());
$row = mysql_fetch_array($result);
echo $row['filePath'];
echo $row['adName'];
echo $row['adLink'];
于 2013-02-12T18:42:24.570 に答える