1

我正在尝试创建一个迷你 PHP 搜索引擎,它只是在两个不同的表中搜索并在另一个表下显示一个表的结果。但我遇到了一个错误。这是我设置查询的地方。

$var = $_GET['q']; 
$trimmed = trim($var);
$get_fighters = "
SELECT * 
FROM fighters 
WHERE name LIKE '%$trimmed%' 
ORDER BY name ASC";
$get_events = "
SELECT * 
FROM events 
WHERE event_name LIKE '%$trimmed%' 
ORDER BY date DESC";
$search_result_fighters = mysql_query($get_fighters); 
$search_result_events = mysql_query($get_events); 
$check_results_fighters = mysql_num_rows($search_result_fighters); 
$check_results_events = mysql_num_rows($search_result_events); 

这是我返回战士的地方(有效)

if ($check_results_fighters == 0) {
    echo "<tr>";
    echo "<td colspan='6'>" . "No Fighters Found." . "</td>";
    echo "</tr>";
}
else if ($check_results_fighters != 0) {
    while($row = mysql_fetch_array($search_result_fighters)) {
      echo "<tr>";
      echo "<td>" . $row['name'] . "</td>";
      echo "</tr>";
    } 
}

这是我返回事件的地方,但它不起作用。我收到错误:警告:mysql_num_rows() 期望参数 1 是资源,在第 30 行的 C:\xampp\htdocs\search.php 中给出的布尔值

if ($check_results_events == 0) {
    echo "<tr>";
    echo "<td colspan='6'>" . "No Events Found." . "</td>";
    echo "</tr>";
}
else if ($check_results_events != 0) {
    while($row = mysql_fetch_array($search_result_events)) {
      echo "<tr>";
      echo "<td>" .  $row['event_name'] . "</td>";
      echo "</tr>";
    } 
}

第 30 行很简单:

$check_results_events = mysql_num_rows($search_result_events); 
4

2 回答 2

2

在 SQL 查询中出现错误时会引发该错误。成功的 SQL 查询会返回一个资源,该资源可用作mysql_num_rows(). 失败的 SQL 查询返回一个布尔值false,它不是 的有效参数mysql_num_rows(),因此会出现错误。

仔细检查您的表结构、字段名称和 SQL 查询。

要进行其他调试,请执行以下操作:

$search_result_events = mysql_query($yourQuery) or die(mysql_error());

这将输出 MySQL 抛出的错误。

旁注

没有必要做

if ($check_results == 0) {
} 
// the if condition here is redundant, don't you agree?
else if ($check_results != 0) {
}

虽然额外比较的性能损失非常、非常、非常微小,但它会让可能阅读您代码的人望而却步。

另外,请停止使用这些mysql_功能。这是关于 PDO 的精彩教程。你应该使用这个。

于 2012-06-14T03:27:28.617 回答
0

根据您其他问题中的表结构,您的事件表中的“日期”应该是“事件日期”:

$get_events = "
SELECT * 
FROM events 
WHERE event_name LIKE '%$trimmed%' 
ORDER BY event_date DESC";
于 2012-06-14T03:30:25.083 回答