PHP MySQL数据输出

问题描述:

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

能否请你帮我用代码来实现这一目标。

<?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"; 
    } 

?> 
+4

你意识到你的$ searchOutput字符串被改写为你检索到的每一行。还请努力学习表格,行和单元格的HTML标记....标记本身是完全不一致的 – 2012-02-08 19:32:10

+0

而且您正在为每行开始一个新的HTML文档/主体,这不是真正有效的HTML并可能转向从浏览器到浏览器的虚假显示。 – hakre 2012-02-08 19:42:36

+0

我该如何解决这个问题。 – Josiah 2012-02-08 22:31:09

在脚本中替换每次经过循环时间$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>"; 

BTW你应该考虑重构你的代码,这样,所有的模板/格式化的东西是从数据库逻辑的东西分开。从长远来看,它会使阅读和维护变得更加容易。

+0

谢谢你这项工作。 – Josiah 2012-02-10 15:41:36

你应该把日期列日期,例如:

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

您应该使用,而不是使用字符串连接,以避免SQL注入Paramterized查询。我确信Mysql文档有一些例子。