PHP MySQL数据输出

时间:2012-02-08 19:28:50

标签: php mysql

我试图从MySQL数据库中读出特定日期的数据。 我想要的是PHP在我输入的特定日期内从数据库中获取所有数据,但似乎脚本只获得了第一行数据而忽略了其余数据。

你能帮我解决一下代码吗?

<?php
    if(isset($_REQUEST['query']))
    {
        $searchQuery = $_POST['data-search'];

        //connceting to db
        $con = mysql_connect($_SERVER['SERVER_NAME'],'root','');
        if(!$con)
        {
            die("Error connecting: ".mysql_error());
            exit;
        }
        //selecting db
        $dbSelect = mysql_select_db("directory",$con);
        $query = "SELECT * FROM websites WHERE Date LIKE '$searchQuery'";
        //executing query
        $result = mysql_query($query,$con);
        if(!$result)
        {
            die("Could not connect: ".mysql_error());
        }
        while($row = mysql_fetch_array($result))
        {
            $searchOutput = "<html><body><table border=1><tr><td>Website Title</td><td>Website URL</td><td>About Website Content</td></tr>
                                <tr><td>".$row['Title']."</td><td>".$row['URL']."</td><td>".$row['Content']."</td></tr></table>";
        }
        $searchSuccess = "<p>Your Search was successful</p</body></html>";
        mysql_close($con);
        echo $searchOutput;
        echo $searchSuccess;

    }
    else{
        echo "Invalid";
    }

?>

2 个答案:

答案 0 :(得分:1)

在您的脚本中,每次通过循环时都会替换$searchOutput

更改:

while($row = mysql_fetch_array($result))
    {
        $searchOutput = "<html><body><table border=1><tr><td>Website Title</td><td>Website URL</td><td>About Website Content</td></tr>
                            <tr><td>".$row['Title']."</td><td>".$row['URL']."</td><td>".$row['Content']."</td></tr></table>";
    }

$searchOutput = "<html><body><table border=1><tr><td>Website Title</td><td>Website URL</td><td>About Website Content</td></tr>";

while($row = mysql_fetch_array($result))
    {
        $searchOutput .= "<tr><td>".$row['Title']."</td><td>".$row['URL']."</td><td>".$row['Content']."</td></tr>";
    }

$searchOutput .= "</table>";
你应该考虑重构代码,以便将所有模板/格式化内容与数据库逻辑内容分开。从长远来看,它将使您更容易阅读和维护。

答案 1 :(得分:0)

您应该将日期列视为日期,例如:

$query = "SELECT * FROM websites WHERE Date between '$startDate' and '$endDate'";

您应该使用Paramterized Queries而不是使用字符串连接来避免sql注入。我确信Mysql文档中有一些例子。