-1

重複の可能性:
警告: mysql_fetch_* はパラメーター 1 がリソースであると想定しており、ブール値のエラーが発生しました

2つ質問があります。この検索クエリ スクリプトを使用して、データベースから結果を取得しています。場所、性別などに基づいてユーザーを検索するように設定されています。

ドロップダウン ボックスの結果リストとスペースを節約するために、表示される結果の数を 5 つに制限しました。

私がやろうとしているのは、ユーザーがこのリンクをクリックして、元の検索基準に対するすべての結果がリストされている新しいページに移動できるようにすることです。これを行うことができますか、私は運がなくても多くの方法を試しました。

また、5 つのプロファイルを除外しようとしました。次の行をクエリに追加して、99999、99998、99997、99996、99995、99994、99993 を取得します。

AND ptb_profiles.user_id != '99999'

しかし、代わりにそれを行うと、クエリ全体でエラーが発生します:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/PTB1/includes/mod_sidebar/search.php on line 31

誰かが私にこれを行う方法を教えてください。ありがとうございました。

<form method="get" action="">
<input type="text" name="query" class="searchbox" placeholder="Search Name/Location" style="width:120px;"/>
<input type="image" src="../PTB1/assets/img/icons/search.png" height="19" width="20" class="searchbutton" name="submit" value="Start Search" />
</form>

<?php
//PHP CODE STARTS HERE

if(isset($_GET['submit'])){

// Change the fields below as per the requirements
$db_host="localhost";
$db_username="root";
$db_password="";
$db_name="database";
$db_tb_atr_name="display_name";

//Now we are going to write a script that will do search task
// leave the below fields as it is except while loop, which will display results on screen

mysql_connect("$db_host","$db_username","$db_password");
mysql_select_db("$db_name");

$query=mysql_real_escape_string($_GET['query']);


$query_for_result=mysql_query("SELECT *
                        FROM ptb_stats
                        WHERE display_name like '%".$query."%' OR location LIKE '%".$query."%' OR gender LIKE '%".$query."%' OR nationality LIKE '%".$query."%' OR age LIKE '%".$query."%' OR postcode LIKE '%".$query."%' LIMIT 5");
echo "<div class=\"search-results\">";
while($data_fetch=mysql_fetch_array($query_for_result))
{

    echo "<div class=\"text\"><a href=\"profile.php?id={$data_fetch['user_id']}\" class=\"search\">";
    echo "<div class=\"spacing\"><img width=35px height= 30px src=\"data/photos/{$data_fetch['user_id']}/_default.jpg\" class=\"boxgridsearch\"/> "; 
     echo substr($data_fetch[$db_tb_atr_name], 0,160);
    echo "</a></div></div>";

}
echo "<div class=\"morebutton-search\"><a href=\"echo '%".$query."%'\">+ view more results</a></div>";

mysql_close();
}

?>
4

1 に答える 1

0

これは、mysql ステートメントのエラーです。データを選択してptb_statsいますが、値をチェックしていますptb_profiles

user_id両方のテーブルのプライマリであると仮定すると、ptb_stats.user_id代わりに使用ptb_profiles.user_idし、次の変更を行います。

$query_for_result=mysql_query("SELECT *
                        FROM ptb_stats
                        WHERE (display_name like '%".$query."%' OR location LIKE '%".$query."%' OR gender LIKE '%".$query."%' OR nationality LIKE '%".$query."%' OR age LIKE '%".$query."%' OR postcode LIKE '%".$query."%') AND ptb_stats.user_id!='99999' LIMIT 5");

チェックする2つの異なる条件があるため、コードとして必ず括弧を使用してください

  • クエリに一致するデータを見つける
  • それらのデータを確認し、プロファイル ID を除外する

上記のように括弧を使用しないと、コードでエラーが発生します

これがお役に立てば幸いです。

于 2012-12-29T04:11:19.880 に答える