为什么我的PHP搜索结果输出中只出现一列?

时间:2013-01-18 19:01:33

标签: php

我有一个search.php页面,可以成功搜索名为“sixcols”的数据库,并显示正确的结果数。但突然间,它只显示每个结果第一列的信息。无论我在代码中首先列出的六种类型的列中的哪一列,都只显示该列。我不知道为什么所有6个都没有出现。

我知道mysql_fetch_array正在变得瘫痪,但我发誓今天早上工作了,我不知道我改变了什么。

我搜索了2个小时的拼写错误或解释,我无法弄清楚。非常感谢任何帮助!

以下是代码:

<?php

error_reporting(E_ALL);
ini_set('display_errors', '1');

$search_output = "";
if(isset($_POST['searchquery']) && $_POST['searchquery'] != ""){
$searchquery = preg_replace('#[^a-z 0-9?!]#i', '', $_POST['searchquery']);
$sqlCommand = "SELECT Subcategory, Type, Author, Summary, Date, Source FROM sixcols WHERE Author LIKE '%$searchquery%' OR Summary LIKE '%$searchquery%'";

        include_once("connect.php");

$query = mysql_query($sqlCommand) or die(mysql_error());

$count = mysql_num_rows($query);
if($count > 1){
$search_output .= "<hr />$count results for <strong>$searchquery</strong><hr />";
while($row = mysql_fetch_array($query)){

            $Subcategory = $row["Subcategory"];
            $Type = $row["Type"];
            $Author = $row["Author"];
            $Summary = $row["Summary"];
            $Date = $row["Date"];
            $Source = $row["Source"];
   $search_output .= '<br/> <span class="subcategory">' . $Subcategory . '</span>'; '<span class="type">' . $Type . '</span>'; '<span class="author">' . $Author . '</span>'; '<span class="summary">' . $Summary . '</span>'; '<br/> <span class="date">' . $Date . '</span>'; '<span class="source">' . $Source . '</span>';
                } // close while
} else {
$search_output = "<hr />0 results for <strong>$searchquery</strong><hr />$sqlCommand";
}
}
?>

3 个答案:

答案 0 :(得分:1)

您遇到语法问题,不再附加到$search_output。您应该打开错误报告以捕获这些错误。

$search_output .= '<br/> <span class="subcategory">' . $Subcategory . '</span>'; 
$search_output .= '<span class="type">' . $Type . '</span>';
$search_output .= '<span class="author">' . $Author . '</span>';
$search_output .= '<span class="summary">' . $Summary . '</span>';
$search_output .= '<br/> <span class="date">' . $Date . '</span>';
$search_output .= '<span class="source">' . $Source . '</span>';

您还需要停止使用mysql_个功能。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDOMySQLi - this article将帮助您确定哪个。

答案 1 :(得分:0)

因为这个而得到一列:

$search_output .= '<br/> <span class="subcategory">' . $Subcategory . '</span>';

分号后的任何内容都不会附加到$search_output字符串。

答案 2 :(得分:0)

$search_output .= '<br/> <span class="subcategory">' . $Subcategory . '</span> <span class="type">' . $Type . '</span> <span class="author">' . $Author . '</span> <span class="summary">' . $Summary . '</span> <br/> <span class="date">' . $Date . '</span>  <span class="source">' . $Source . '</span>';