【问题标题】:MySQL Random output does not workMySQL随机输出不起作用
【发布时间】:2014-12-12 21:08:49
【问题描述】:

所以我想从我的数据库中提取一条随机记录:

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%
  • 存在表格,具有准确的措辞并包含数据
  • 数据库用户有权提取数据

我的脚本有什么问题?

【问题讨论】:

标签: php mysql random


【解决方案1】:

那是行不通的。你做一个查询就是这样。您应该首先使用mysql_fetch_assoc 或其他函数获取数据以获取输出。

并且mysql_* 函数已被弃用,您应该从 mysqli 或 PDO 和准备好的语句开始。

【讨论】:

    【解决方案2】:

    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 数组,以便您了解结构以及如何访问所需的元素。

    【讨论】:

    • 非常感谢!我把你的最后一行改成 echo $data_array[id];,然后就成功了!
    【解决方案3】:

    这里很多人(正确地)指出不应再使用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'];
    

    【讨论】:

      猜你喜欢
      • 2013-04-13
      • 2017-09-28
      • 1970-01-01
      • 1970-01-01
      • 2014-05-12
      • 2011-01-19
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多