1

2 つの異なるテーブルを単純に検索し、あるテーブルの結果を別のテーブルの下に表示するミニ 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()false失敗した SQL クエリは、 の有効な引数ではないブール値を返す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

あなたの他の質問のテーブル構造によると、「日付」はイベントテーブルの「event_date」であるはずです:

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