1

ユーザーが物件を検索できる検索ボックスがあります。また、検索ボックスには2つの選択ボックスがあります。1つは最低価格用、もう1つは最高価格用です。

ユーザーが最低価格10000と最高価格1000000を選択した場合、クエリはどのようになりますか。

これが私のコードですが、機能していないようです:

 SELECT * FROM property WHERE price > '%{$_POST['pricemin']}%' AND price < '%{$_POST['pricemax']}%'
4

3 に答える 3

2

まず、ユーザーが入力した値をクエリに直接入力しないでください。SQL インジェクション攻撃を求めています。次に、なぜ%数字に対してワイルドカード マッチ ( ) を実行しようとしているのですか?

SELECT col1, col2, col3 FROM property WHERE price BETWEEN $min AND $max;
于 2013-03-12T13:44:09.353 に答える
2

%value%まず、 を使用しない限り、 を使用して比較を行うことはできませんLIKE。第二に、準備されたステートメントを実際に使用する必要があります。

if (isset($_POST['pricemin'], $_POST['pricemax'])) {
    $stmt = $db->prepare('SELECT * FROM property WHERE price > ? AND price < ?');
    $stmt->execute(array($_POST['pricemin'], $_POST['pricemax']));
    $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
}

PDO の例を示します。PDO や mysqli を持っていない場合は、それを使い始めてください!

于 2013-03-12T13:51:44.927 に答える
0

わかりました、最初に変数をエスケープする必要があるので、これを試してください

$pricemin = mysql_real_escape_string($_POST['pricemin']);
$pricemax = mysql_real_escape_string($_POST['pricemax']);

そして、私はあなたが逃したと思います

SELECT * FROM property WHERE price > '$pricemin' AND price < '$pricemax'

しかし、php http://www.php.net/manual/en/book.mysqli.php asmysql_real_escape_string()でデータベースを使用していて、他の mysql 関数が減価償却されている場合は、mysqli を調べる必要があります。

于 2013-03-12T13:48:34.393 に答える