我有一个search.php页面,它成功地搜索了一个名为"sixcols"的数据库,并显示了正确的结果数。但是突然之间,它只显示每个结果的第一列中的信息。无论我在代码中首先列出的六种列中的哪一种,都只显示该列。我不知道为什么6个人都没有出现。
我知道mysql_fetch_array正在变得过时,但我发誓今天早上这个工作,我不知道我改变了什么。
我找了两个小时,想找个打字错误或解释,可就是找不出来。任何帮助都非常感激!
代码如下:
<?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";
}
}
?>
您有一个语法问题,您停止追加到$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_
函数。它们不再被维护,并被正式弃用。见红框?学习预处理语句,并使用PDO或MySQLi——本文将帮助您决定使用哪一种。
你得到一列因为这个:
$search_output .= '<br/> <span class="subcategory">' . $Subcategory . '</span>';
分号之后的任何内容都不追加到$search_output
字符串。
$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>';