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.

ページの読み込みを超えて持続するためにこれが実際に必要かどうかはまだ明らかではありません。これらの行が1つのページにのみ必要であり、他のページまたは後続のページの読み込みで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 に答える