2

在盯着这些代码行,并在多个编码论坛上研究了几个小时之后,我被我的代码卡住了,它不能完全发挥作用。我正在尝试成功运行这个 PHP 脚本,以便可以从 MySQL 表中随机查询文本引用并显示在我网站的页脚中。每次用户刷新网站时,报价都应该改变。我还试图记录每个报价显示的次数,然后当我的网站上显示特定报价时,计数器会告诉站点用户该特定报价已显示多少次。到目前为止,我的代码是:

    <?php

    include('Includes/inc_connect.php');
    $DBName = 'database';
    if (!@mysql_select_db($DBName, $DBConnect))
        echo "<p style='text-align:center'>There are no quotes to view!</p>";
    else {
        $TableName = "randomquote";
        $SQLstring = "SELECT quote FROM $TableName";
                    //executes the query
        $QueryResult = @mysql_query($SQLstring, $DBConnect);
            if ($QueryResult === false)
            {
                echo "<p>Unable to retrieve the data.</p>" . "<p>Error code: " . mysql_errno($DBConnect) . ": " . mysql_error($DBConnect) . "</p>";
            }
            else
            {
                $quote_array = array();//Creates a blank array
    //use a while loop to extract the data from the database table into an indexed array
                while(($Row = mysql_fetch_row($QueryResult)) !== FALSE)
                {
                    $quote_array = $Row[0];
                }
            }

    //assign the contents of the table to an array variable
            $quote_count=count($quote_array);
            $RandomArrayIndex = rand(0, $quote_count-1);
            $quote = stripslashes($quote_array[$RandomArrayIndex]);
                $SQLString = "UPDATE randomquote SET display_count " . " = display_count + 1 WHERE quote = " . $quote_array[$quote];

                $SQLString = "SELECT display_count from randomquote WHERE quote = " . $quote_array[$quote];
                $display_count = @mysql_query($SQLString, $DBConnect);
    //display the random quote on the Web page
                echo "<p style='text-align:center;font-style:italic'><strong>" . $quote . "</strong></p>\n";
                echo "<p style='text-align:center>This quote has displayed " . $display_count . " times.</p>/n";
    }
        else
        {
    //specify that the comments cannot be read
        echo "<p>The quote cannot be displayed at this time</p>\n";
        }
else
{
//specify that there are no quotes
echo "<p>There are no quotes to display.</p>\n";
}

我是 PHP 和 MySQL 的学生,因此非常感谢任何和所有的帮助和建议。非常感谢!

4

2 回答 2

0

我相信这可能会有所帮助:

改变

$SQLstring = "SELECT quote FROM $TableName";

$SQLstring = "SELECT quote FROM $TableName ORDER BY RAND()";

或者如果您一次只想要一个报价

$SQLstring = "SELECT quote FROM $TableName ORDER BY RAND() LIMIT 1";

我在这里假设您对显示计数的更新工作正常。

然后,您可以删除代码的随机数组部分。

于 2012-11-28T13:26:06.087 回答
0

您还可以考虑改进 - 如果我理解正确,您正在做的是获取所有报价,然后使用 php 随机选择一个。为什么不使用 php 随机选择一个数字(假设您的报价表有一个 id 键的报价 ID)并只查询它?

在伪代码中
$rand_post_id = rand(0,$num_of_quotes);
$query = "从 $TableName WHERE quote_id=$quoteId 中选择报价";
$res = $mysql_query($query,$dbconnect);

并确保您正确地转义了我没有的报价 ID。

于 2012-11-28T13:52:53.333 回答