2

所以我使用的是RAND() LIMIT 3,但我在循环中使用它来获取 3 个随机行。

我需要在我网站的不同位置使用每一列。如何在不为每列运行不同查询的情况下获取数据?

我需要的数据不应该是有序的,例如:

$Title, will be the title of the page.
$price, will be the price of the service/product.
$description, will be the description of the service/product.

显然,它们在 php 文件中并没有相互接近。

这两个答案听起来合乎逻辑,但我对 mysql 完全陌生,我无法让它工作。

这是我的 php 文件中的内容:

<?php
mysql_connect("localhost", "test", "test") or die (mysql_error ());
mysql_select_db("test") or die(mysql_error());
$strSQL = "SELECT name FROM UserId ORDER BY RAND() LIMIT 3";
$rs = mysql_query($strSQL);
while($row = mysql_fetch_array($rs)) {
  echo $row['name'] . "<br />";
 }
mysql_close();
?>

它的作用是返回 3 行的随机“名称”列。该表具有“id”、“name”和“Age”。

非常感谢您的帮助!

4

2 回答 2

3

$_SESSION仅当它们不存在时才将它们存储在其中,并始终从$_SESSION.

// On  every page that uses these values:
session_start();
if (empty($_SESSION['rand_rows'])) {

   // DB connection code omitted...

   // This block will execute once per session only...
   // Get 3 random rows
   $strSQL = "SELECT name, id, age FROM UserId ORDER BY RAND() LIMIT 3";
   $rs = mysql_query($strSQL);
   if ($rs) {
     // Fetch all 3 rows and store them in $_SESSION:
     while ($row = mysql_fetch_assoc($rs)) {
       $_SESSION['rand_rows'][] = $row;
     }
   }
}

// Later, get them $_SESSION
// To get the name for example:
foreach ($_SESSION['rand_rows'] as $r) {
  echo $r['name'] . "<br />";
}

// Use the same looping pattern to get the id or age where you need them.

目前尚不清楚您是否真的需要它在页面加载时持续存在。如果您只需要一个页面上的这些行,并且可以在其他页面或后续页面加载上获得 3 个不同的行,则无需$_SESSION将它们存储到数组中,而只需将它们存储到数组中:

// Array to hold all results
$results = array();
while ($row = mysql_fetch_assoc($rs)) {
  $results[] = $row;
}

...并使用相同的foreach模式来迭代$results.

于 2012-08-26T21:07:25.367 回答
2

如果您将值放入变量中,例如$title,$price并且$description它们的值将在同一个文件中被记住,即使在使用包含时也是如此。

如果您尝试跨不同页面保存值,有不同的方法可以实现这一点,尽管我可能会建议使用$_SESSION跨页面存储此类信息。

如果您按照最初的建议进行操作,但没有运气,我将需要更多信息才能正确回答您的问题。一个小的代码示例可能会有所帮助。


编辑:

虽然@michael-berkowski 的答案功能齐全,但您不一定要使用它$_SESSION来实现您想要的。由于您说您只是在学习 PHP,因此我添加了一种不同的方法。虽然不像其他答案那么优雅,但它更快,并且我已经编辑了一些变量(这是一个好习惯,使用小写表名,变量相同):

<?php
//Insert DB-connection code
$sql = "SELECT `name` FROM `user` ORDER BY RAND() LIMIT 3";
$rs = mysql_query($sql);
//We should check, if there are actually 3 rows, before doing anything else.
if (mysql_num_rows($rs) == 3) {
   $title = mysql_result($rs,0,0);
   $price = mysql_result($rs,1,0);
   $description = mysql_result($rs,2,0);
}
echo("Title: $title <br/>Price: $price <br/>Description: $description");
?>

祝你学习 PHP 好运。

于 2012-08-26T21:14:31.610 回答