簡體   English   中英

從MySQL獲取隨機行並使用PHP顯示它

[英]Fetching a random row from MySQL and displaying it with PHP

我試圖從我的表中選擇行引用和作者並回應它

我的目標是創建一個隨機引用生成器並顯示實際引用和作者。

我在表格中輸入了25個引號,包含3行(ID,引用,作者)

我的代碼如下,我不斷收到資源ID#9錯誤

<?php

mysql_select_db(name of database);

$quotes = "SELECT author AND quote FROM inspirational_quotes ORDER BY RAND() LIMIT 1";

$result = mysql_query($quotes);

WHILE ($row = mysql_fetch_array($result)):
ENDWHILE; 

echo "$result";
?>

請幫忙

首先,我想你想要

<?php

mysql_select_db(name of database);
$quotes = "SELECT author,quote FROM inspirational_quotes ORDER BY RAND() LIMIT 1";
$result = mysql_query($quotes);

WHILE ($row = mysql_fetch_array($result)):
ENDWHILE; 

echo "$result";
?>

但我還有一個建議

預加載所有報價ID

CREATE TABLE quoteID
(
    ndx int not null auto_increment,
    id int not null,
    PRIMARY KEY (ndx)
);
INSERT INTO quoteID (id) SELECT id FROM inspirational_quotes;

現在根據quoteID表中的id選擇

SELECT B.author,B.quote FROM quoteID A INNER JOIN inspirational_quotes B
USING (id) WHERE A.ndx = (SELECT CEILING(MAX(ndx) * RAND()) FROM quoteID);

這應該可以正常擴展,因為@rnd_id的返回值來自一個在quoteID表中沒有間隙的id列表。

<?php

mysql_select_db(name of database);
$quotes = "SELECT B.author,B.quote FROM quoteID A INNER JOIN "
. "inspirational_quotes B USING (id) "
. "WHERE A.ndx = (SELECT CEILING(MAX(ndx) * RAND()) FROM quoteID)";

$result = mysql_query($quotes);

$row = mysql_fetch_array($result);

echo "$result";
?>

試試看 !!!

你不能將$ result作為字符串回顯

    WHILE ($row = mysql_fetch_array($result)):
     echo $row['author'] . " " . $row['quote'];
ENDWHILE; 


?>

你沒有回應正確的變量。

echo $row['author'] . ": " . $row['quote'];

為什么AND剛剛逗號。

SELECT author, quote FROM inspirational_quotes ORDER BY RAND() LIMIT 1

MySQL選擇語法

我建議你通過PHP隨機化結果來提高性能。 例如。:

$r = mysql_query("SELECT count(*) FROM inspirational_quotes");
$d = mysql_fetch_row($r);
$rand = mt_rand(0,$d[0] - 1); 
$r = mysql_query("SELECT author,quote FROM inspirational_quotes LIMIT $rand, 1");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM