2

テーブルに 6 列の MySQL データベースがあります。最終的には約 100 行になりますが、今のところ 3 行あります。

列のタイトル: FirstName、SecondName、Sentence1、Sentence2、Sentence3、Sentence4

すべてのテーブルは VARCHAR に設定されています

Web ページで php を使用して、各行からランダム データを呼び出したいと考えています。

PHPを使用してランダム化する方が速いと読みましたが、検索してもこれを行う方法が本当にわかりません。

MySQL データベースに接続し、次のコードを使用して返される結果を取得できます。

    <?php
    // Connect to database server
    mysql_connect("localhost", "xxx", "yyy") or die (mysql_error ());
    // Select database
    mysql_select_db("zzz") or die(mysql_error());
    // SQL query
    $strSQL = "SELECT * FROM Users";
    // Execute the query (the recordset $rs contains the result)
    $rs = mysql_query($strSQL);
    // Loop the recordset $rs
    // Each row will be made into an array ($row) using mysql_fetch_array
    while($row = mysql_fetch_array($rs)) {
    // Write the value of the column FirstName (which is now in the array $row)
    echo $row['FirstName'] . "<br />";
      }
    // Close the database connection
    mysql_close();
    ?>

しかし、これは 1 列のデータを返すだけです。次のようなものを使用して、Webページでランダムコードを返す必要があります。

echo $firstname . $lastname . $sentence1 . $sentence2 . $sentence3 . $sentence4;

これは、後でさらに 3 ~ 4 行繰り返されることに注意してください。

echo $firstname_2 . $lastname_2 . $sentence1_2 . $sentence2_2 . $sentence3_2 . $sentence4_2;

私は配列にあまり熱心ではありませんが、誰かが私を始めてくれるなら、それは素晴らしいことです、ありがとう.

4

7 に答える 7

5

SQL クエリで rand を使用するように指示しているすべての人は、質問を読んでいません。それらの人々へ:質問者は、ランダムな行ではなく、行からのデータのランダムな組み合わせを望んでいます。

このようなもの。データベースからすべての結果を取得し、完全にランダムな組み合わせをエコーし​​ます。配列は非常に便利なので、使用を避けることはできませんでした。

<?php
// Connect to database server
mysql_connect("localhost", "xxx", "yyy") or die (mysql_error ());
// Select database
mysql_select_db("zzz") or die(mysql_error());
// SQL query
$strSQL = "SELECT * FROM Users";
// Execute the query (the recordset $rs contains the result)
$rs = mysql_query($strSQL);
// Array to hold all data
$rows = array();
// Loop the recordset $rs
// Each row will be made into an array ($row) using mysql_fetch_array
while($row = mysql_fetch_array($rs)) {
// add row to array.
$rows[] = $row;
  }
// Close the database connection
mysql_close();

// Max rand number
$max = count($rows) - 1;

// print out random combination of data.
echo $rows[rand(0, $max)][0] . " " . $rows[rand(0, $max)][1] . " " . $rows[rand(0, $max)][2] . " " . $rows[rand(0, $max)][3] . " " . $rows[rand(0, $max)][4] . " " . $rows[rand(0, $max)][5];

?>
于 2012-10-05T16:18:15.057 に答える
2

PHPのdbからランダムデータを取得する方法はいくつかあります

SELECT * FROM `table` ORDER BY RAND() LIMIT 0,1;

別の方法:-

$range_result = mysql_query( " SELECT MAX(`id`) AS max_id , MIN(`id`) AS min_id FROM    `table` ");
$range_row = mysql_fetch_object( $range_result ); 
$random = mt_rand( $range_row->min_id , $range_row->max_id );
$result = mysql_query( " SELECT * FROM `table` WHERE `id` >= $random LIMIT 0,1 ");

もう1つの方法:-

$offset_result = mysql_query( " SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `table` ");
$offset_row = mysql_fetch_object( $offset_result ); 
$offset = $offset_row->offset;
$result = mysql_query( " SELECT * FROM `table` LIMIT $offset, 1 " );
于 2012-10-05T16:19:42.713 に答える
2

ランダムに表示するすべての値を変数に格納し、rand() http://php.net/manual/en/function.rand.phpおよび shuffle() http://php.net/manual/を使用します。 en/function.shuffle.phpランダムデータを作成して表示する

于 2012-10-05T16:16:36.610 に答える
1

ORDER BY RAND()ランダムなレコード選択に使用します。

于 2012-10-05T16:15:42.337 に答える
1

これを実装しようとしていますが、小さな乱数ではなく、すべての列 (現在は 14) からエントリを取得しています。彼のコードは私に合っているので、マシュー・マクガバンの意見が欲しいです...

ここ:PHPとMySQLを使用したランダムセンテンス

于 2013-07-10T02:43:45.447 に答える
1

ユーザー用に1つずつ、2つのテーブルに分割します

ユーザー: ID | ファーストネーム | 苗字

文: id | ユーザー ID | 文

「id / userId」の両方で結合し、ORDER BY RAND() を実行してから、おそらく LIMIT 20 を実行します。

于 2012-10-05T16:17:27.483 に答える
1
SELECT * FROM `Users` ORDER BY RAND() LIMIT 0,1;
于 2012-10-05T16:14:01.917 に答える