MySQL随机输出不起作用

时间:2014-12-12 21:08:50

标签: php mysql random

所以我想从我的数据库中删除一个随机记录:

mysql_connect("127.0.0.1","my_shop","xxxxxx");

mysql_select_db("my_shop_db");
error_reporting(E_ALL && ~E_NOTICE);

$random_record = "SELECT * FROM products ORDER BY RAND() LIMIT 1";
$random_product = mysql_query($random_record) or die ($random_record);

echo $random_product['id'];

到目前为止我尝试了什么:

  • 数据库连接100%
  • 表存在,具有准确的措辞并包含数据
  • 数据库用户有权提取数据

我的剧本出了什么问题?

3 个答案:

答案 0 :(得分:2)

那不行。你做了一个查询。您应首先使用mysql_fetch_assoc或其他函数获取数据以获取输出。

并且mysql_*函数已弃用,您应该从mysqli或PDO和预处理语句开始。

答案 1 :(得分:1)

mysql_*被弃用且不安全且不应再使用的强制性评论。

mysql_query返回资源对象而不是数组。您需要将数据提取到数组中,以便可以访问它。

$random_record = "SELECT * FROM products ORDER BY RAND() LIMIT 1";
$random_product = mysql_query($random_record) or die ($random_record);
//fetch data
$data_array = mysql_fetch_assoc($random_product);

echo $data_array['id'];

print_r数组,以便您了解结构以及如何访问所需的元素。

答案 2 :(得分:0)

很多人在这里(正确地)指出不应再使用mysql,然后继续使用mysql回答问题。我认为值得向你展示改变mysqli是多么容易。使用dan08的答案作为跳跃点:

//set up connection, save it into the $link variable
$link = mysqli_connect("127.0.0.1","my_shop","xxxxxx", "my_shop_db");
//your query, same as before
$random_record = "SELECT * FROM products ORDER BY RAND() LIMIT 1";
//almost the same syntax as mysql_*, but with the $link added in to specify the connection
$random_product = mysqli_query($link, $random_record) or die ($random_record);
//fetch data
$data_array = mysqli_fetch_assoc($random_product);

echo $data_array['id'];