我试图从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";
}
?>
答案 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文档中有一些例子。