我正在尝试创建一个迷你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);
答案 0 :(得分: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_
功能。 Here's a brilliant tutorial on PDO。你应该使用它。
答案 1 :(得分:0)
根据您的其他question中的表格结构,“日期”应该是您的事件表中的“event_date”:
$get_events = "
SELECT *
FROM events
WHERE event_name LIKE '%$trimmed%'
ORDER BY event_date DESC";