0

MySQL クエリから値を取得する PHP スクリプトを作成しました。mysql_fetch_array を使用して結果を配列に追加しました。配列からランダムな値を選択しようとしていますが、array_rand が機能していないようです。私のコードは以下の通りです:

<?php 
session_start();
ob_start();
require_once 'includes/db_connection.php';
require_once 'includes/contest.php';
require_once 'includes/survey.php';
require_once 'includes/poll.php';
require_once 'includes/clients.php';
require_once 'includes/user.php';
//Select All Entries from Contest and Save as Array
//Select 
mysql_connect(localhost,s2ktest_s2kuser, Bc33iyZYQWgUmguBehPI);
$dbname = 's2ktest_s2k';
mysql_select_db($dbname);
$contestid = 20;
$query = "SELECT UserID FROM Contest_Entered WHERE ContestID = $contestid";
//Save Result
$result = mysql_query($query) or die(mysql_error());
//Save All Contest Entries in Array
$entries = mysql_fetch_array($result) or die(mysql_error());

//Output all Rows
//While Each Entry in the Array is a Value
while($entries = mysql_fetch_array($result))
{
echo $entries;
echo "</br>";
}
echo array_rand($entries);
//mysql_free_result($result);
?>
4

3 に答える 3

0

mysql_fetch_array()一度に 1 行だけを取得します。[]まず、 append 構文を使用して結果セット全体を配列にロードし、そこからランダムにフェッチします。

$all_entries = array();
// Using MYSQL_NUM to retrieve only numeric keys
// by default, mysql_fetch_array() gets both numeric and associative keys
while($entries = mysql_fetch_array($result, MYSQL_NUM))
{
  // Append all rows onto an array, only a sinlge value so you get a 1D array 
  $all_entries[] = $entries[0];
}
// Then call array_rand() against $all_entries
echo array_rand($all_entries);

免責事項:

古いmysql_*()関数から、準備済みステートメントをサポートする最新の API に移行することを検討してください。 PDOは優れており、RDBMS 間で移植可能ですが、 MySQLiも優れた代替手段です。

于 2012-06-12T17:22:08.250 に答える
0

これは、ループの開始時に の値を$entries配列から文字列に変更しているためです。array_rand($entries)代わりに、ループの前にエコーを試してください。

ただし、代わりにテーブルからランダムな行を取得しようとしている場合 (コードのように行からランダムな列を取得するのではなく) ORDER BY RAND()、クエリで使用します。何を目指しているのか不明です。

幸運を!

于 2012-06-12T17:22:14.710 に答える
0

配列がないためかもしれません... while は一度に1行しか生成していません。

while($entries = mysql_fetch_array($result))
 {
  echo $entries;
  $arr[] = $entries;
  echo "</br>";
 }
 echo array_rand($arr);
于 2012-06-12T17:22:41.887 に答える