如何从数组中随机读取文本字符串,其中文本存储在MySQL数据库中

时间:2012-11-28 13:07:26

标签: php mysql database arrays

在盯着这些代码行,并在多个编码论坛上研究了几个小时之后,我仍然坚持使用我所拥有的代码,但这些代码并没有完全发挥作用。我正在尝试成功运行此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的学生,所以非常感谢任何和所有的帮助和建议。非常感谢!

2 个答案:

答案 0 :(得分:0)

我相信这可能有所帮助:

变化

$SQLstring = "SELECT quote FROM $TableName";

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

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

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

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

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

答案 1 :(得分:0)

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

伪代码中的

    $ rand_post_id = rand(0,$ num_of_quotes);
    $ query =“SELECT quote FROM $ TableName WHERE quote_id = $ quoteId”;
    $ res = $ mysql_query($ query,$ dbconnect);

并确保你正确地逃避我没有的引用ID。