Array Rand不使用MySQL获取数组

时间:2012-06-12 17:18:09

标签: php mysql sql

我编写了一个PHP脚本,用于从MySQL查询中检索值。我使用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);
?>

3 个答案:

答案 0 :(得分:0)

mysql_fetch_array()一次只检索一行。首先,使用[] 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也是一个不错的选择。

答案 1 :(得分:0)

这是因为您在启动循环时将$entries的值从数组更改为字符串。尝试在循环之前回显array_rand($entries)

但是,如果您尝试从表中检索随机行(而不是行中的随机列,正如您的代码所示),请在查询中使用ORDER BY RAND()。目前还不清楚你的目标是什么。

祝你好运!

答案 2 :(得分:0)

也许是因为你没有任何阵列...... 而当时只生成一行。

while($entries = mysql_fetch_array($result))
 {
  echo $entries;
  $arr[] = $entries;
  echo "</br>";
 }
 echo array_rand($arr);