【问题标题】:Trying to get a random number from db php doesn't work尝试从 db php 获取随机数不起作用
【发布时间】:2018-06-16 18:53:14
【问题描述】:
    $total_numMIN = mysqli_query($con,"SELECT MIN(id) FROM view_rating");
    $total_numMAX = mysqli_query($con,"SELECT MAX(id) FROM view_rating");
     $random_no = mt_rand($total_numMIN, $total_numMAX);    
     print $random_no;

我正在尝试从我的数据库中的最小和最大数字中随机生成一个数字。现在我得到的错误是

警告:mt_rand() 期望参数 1 为整数,对象在

我只是不确定为什么查询的结果不是整数

【问题讨论】:

  • 你得到什么错误信息?
  • 警告:mt_rand() 期望参数 1 为整数,给定对象

标签: php mysql sql mysqli


【解决方案1】:

mysqli_query() 返回一个 mysqli_result,它是一个对象,而不是您期望的数字。您需要从查询中获取一组结果。 MIN 和 MAX 查询也可以组合成一个查询。

$result = mysqli_query($con,"SELECT MIN(id) as min, MAX(id) as max FROM view_rating");

if($result) {
    $resultArray = $result->fetch_assoc();
    $random_no = mt_rand($resultArray['min'], $resultArray['max']);    
    print $random_no;
}

可能有更简洁的方法来做到这一点。好久没用PHP了。

【讨论】:

  • 我认为您应该给列起别名,这样它们的名称才会更合理。
【解决方案2】:

像这样改变你的代码

$total_numMIN = mysqli_fetch_assoc(mysqli_query($con,"SELECT MIN(id) as min,MAX(id) as max FROM view_rating"));
$random_no = mt_rand($total_numMIN['min'], $total_numMAX['max']);    
print $random_no;

因为 mysqli_query 只是给你一个对象。您必须将数据作为关联数组获取,然后您可以将其用于 mt_rand 希望这会奏效

【讨论】:

    【解决方案3】:

    mysql_query 返回一个结果,而不是一个值。

    来自函数的文档:http://php.net/manual/en/mysqli.query.php

    返回值

    失败时返回 FALSE。对于成功的 SELECT、SHOW、DESCRIBE 或 EXPLAIN 查询 mysqli_query() 将返回一个 mysqli_result 对象。为了 其他成功的查询 mysqli_query() 将返回 TRUE。

    【讨论】:

      猜你喜欢
      • 2014-05-12
      • 1970-01-01
      • 2020-01-20
      • 1970-01-01
      • 1970-01-01
      • 2018-12-20
      • 1970-01-01
      • 2019-05-22
      • 1970-01-01
      相关资源
      最近更新 更多