0

ユーザーの入力によって受け取った値に基づいて動的クエリを作成する必要があります。変数の値は GET によって投稿されます。単純にこれを実行すると

$qry = "SELECT* FROM LAPTOP WHERE 1=1";
$resul = mysqli_query($qry);
retrieve($resul);

このテーブルのすべてのコンテンツはエラーなしで表示されます (ここでの取得関数は、クエリに基づいてすべての結果を表示します) が、このように変更しようとすると、空白のページが表示されます

$qry = "SELECT * FROM LAPTOP WHERE 1=1";
if(!empty($company))
{
$qry .= " AND company='$company'" ;
}
if(!empty($cpu))
{
$qry.= " AND cpu='$cpu' " ;

}
if(!empty($lifestyle))
{
$qry.= " AND lifestyle='$lifestyle' " ;

}
if(!empty($display))
{
$qry.= " AND display='$display'" ;

}
if(!empty($ram))
{
$qry.= " AND ram='$ram' " ;

}
if(!empty($HDD))
{
$qry.= " AND HDD='$HDD' " ;
}
echo $qry;
$result= mysqli_query($qry) || die(mysqli_error()) ;
retrieve($result) ;
$p = basename($_SERVER['REQUEST_URI']) ;

の結果echo $qry;は期待どおりです。これを表示します

SELECT * FROM LAPTOP WHERE 1=1 AND company='Asus' AND cpu='intel i3'

これを修正する方法はありますか?WHERE 1=1 句を使用しようとした理由は、すべての変数が NULL に等しい場合、クエリがテーブルからすべての行を返すためです。

4

3 に答える 3

1

データベースに条件に一致するデータがないと思います。または、名前の大文字と小文字が区別されます。

例 :

     cpu='Intel i3'   // with big I

     cpu='intel I3'   // with big I

     cpu='intel  i3'  // double space.

または、大きな文字列がある場合は、使用することを考えてくださいLIKE

    $qry.= " AND cpu LIKE '%$cpu%' " ;
于 2013-09-21T19:00:20.467 に答える