从带有链接的数据库中提取随机数据的PHP代码


PHP code to fetch random data from database with link

我有一个大学的项目。我需要制作一个网站,它将从数据库中生成随机数据。但它也需要生成一个链接。这样人们就可以复制该链接(由于网站正在生成不同的数据,人们可以通过复制URL来查看他们想要的数据)。

我想用RAND()。但在加入stackoverlow之后,我发现RAND()不是一个好方法。

我可以使用RAND()获取随机数据,但它不会生成任何URL。这也是另一个问题。我以前发布过这个问题。我认为我不应该使用RAND()函数。

这是我现在使用的代码:

<!--PHP code for fetching data from database-->
<?php
  $con = mysql_connect("localhost","root","");
  if (!$con){
  die('Could not connect: ' . mysql_error());
  }
  mysql_select_db("xlsx_db", $con);
  $result = mysql_query("SELECT * FROM sheet1 ORDER BY RAND() LIMIT 1");
  if (!$result) {
  echo 'Could not run query: ' . mysql_error();
  exit;
  }
  $row = mysql_fetch_array($result);
  echo "<b>Quote: </b>";
  echo $row['quote']."<br>";
  echo $row['by']."<br>";
?>

有人能建议我怎么做吗?任何形式的帮助都将不胜感激。

不确定这是否真的是您所需要的,但是:

<?php
$rand = true;
if (isset($_GET['id'])) {
    if (is_int($_GET['id'])) {
        $id = (int) $_GET['id'];
        $q = 'SELECT * FROM table WHERE id = ?';
        $stmt = mysqli_prepare($dbc, $q);
        mysqli_stmt_bind_param($stmt, 'i', $id);
        mysqli_stmt_execute($stmt);
        if (mysqli_stmt_num_rows($stmt) == 1) {
            $rand = false;
            // display
        }
    }
}
if ($rand) {
    $q = 'SELECT * FROM table ORDER BY RAND() LIMIT 1';
    // run query
    $res = mysqli_fetch_array($r);
    $url = 'www.example.com/index.php?id=' . $res['id'];
}
?>

由于我们已经确保$_GET['id']值是整数,但为了完整性,准备好的语句并不是严格意义上的必需的;D

如果从多个表中选择数据,则可以使用另一个表来存储数据组合,然后使用组合的ID作为id参数来生成url。

如果想要获得永久链接,则需要创建另一个页面。它将获取一个ID(或标识您随机选择的数据记录的东西)并显示特定数据。你可以在你的随机页面上链接到这个。

在数据库中查找一个随机行。获取行的id。将URL与id连接起来。URL应该指向一个页面,该页面将从表中提取id为的行。

我前几天发现了这个,并认为它非常全面:

http://mysql.rjweb.org/doc.php/random