2011-01-27 12 views
2

フォームに6つの選択項目があります。私はMYSQL DBの6つを検索したい。複数の項目を複数の列で検索

$result = mysql_query("SELECT * FROM wsinmuebles WHERE Property_Type LIKE '%{$_POST['Property_Type']}%'"); 

しかし、もっと試してみると結果はありません。

$result = mysql_query("SELECT * FROM wsinmuebles WHERE 
Property_Type LIKE '%{$_POST['Property_Type']}%' AND 
Estado LIKE '%{$_POST['Estado']}%' AND 
Ciudad LIKE '%{$_POST['Ciudad']}%' AND 
Urbanizacion LIKE '%{$_POST['Urbanizacion']}%' AND 
Operacion LIKE '%{$_POST['Operacion']}%' AND 
Precio_bsf LIKE '%{$_POST['Precio_bsf']}%'"); 

これはPOSTメソッドによるフォームに由来します。

私が必要とするのは、MYSQL DBのProperty_Type、Estado、Ciudad、Urbanizacion、Operacion、およびPrecio_bsf変数を検索し、それらの値すべてに一致する結果のみを受け取ることです。

+0

を使用してSQLインジェクションからコードを保護するために促しますか?また、本当に6つの条件すべてにマッチしたいですか? –

+0

はいジム、私はそれらをすべて一致させる必要があります。このようなものhttp://www.entreinmuebles.com.ve/ –

答えて

1

私はあなたの検索文字列の代わりに与えられたアクションを実行すると、 'と1 = 1; delete wsinmuebles "これが私のserachクエリであれば、すべてのデータを失うでしょう。

$result = mysql_query("select * from tbl1 where Name='".mysql_escape_string ($_POST["value"]."'"); 
+0

SQLインジェクションを避けるようアドバイスしてくれてありがとう。私は本当にあなたが意味することを理解していません。コードを教えてもらえますか?申し訳ありませんが、私はこれで新しいです、実際に私はインターネット上で多くのことを読んでコードを取得します!ありがとう! –

+0

が例 –

1

まず、データが"文字を持つ任意のSQLインジェクション攻撃とも問題を回避するためにmysql_real_escape_stringの(Link)を使用して、ポストの値をエスケープします。

第二には、クエリをエコーと
クエリが実際にいくつかの値を返すべきか、あなたがいることを言及したので、基準の残りの部分を含んで一致がないかもしれかどうかを確認するために、データベースに対してそれを実行すると、テーブルのデータをチェックそれらのすべての値に一致する結果が必要です。

+0

に更新されました。ありがとう! –

0

フィールドUrbanizacionがnullの場合、クエリは返されません。

Urbanizacion LIKE '%%' => FALSE when Urbanizacion is Null 

Nullは処理する必要があります。また、私は強くあなたがどんな結果を得るか、あなたはmysqlのコマンドラインクライアントから同じクエリを実行する場合は、代わりに、変数の明示的な値で、mysql_real_escape_string

$result = mysql_query(" 
    SELECT * FROM wsinmuebles WHERE 
    IFNULL(Property_Type,'') LIKE '" . mysql_real_escape_string($_POST['Property_Type']) ."' AND 
    IFNULL(Estado,'') LIKE '" . mysql_real_escape_string($_POST['Estado']). "' AND 
    IFNULL(Ciudad,'') LIKE '" . mysql_real_escape_string($_POST['Ciudad']) ."' AND 
    IFNULL(Urbanizacion,'') LIKE '" . mysql_real_escape_string($_POST['Urbanizacion']) ."' AND 
    IFNULL(Operacion,'') LIKE '" . mysql_real_escape_string($_POST['Operacion']) ."' AND 
    IFNULL(Precio_bsf,'') LIKE '" . mysql_real_escape_string($_POST['Precio_bsf']) ."'"); 
+0

ありがとう、私は注射を避けるためにあなたの助言を取る。しかし、まだ検索の問題があります。 :(ありがとうございます! –

+0

NULLsについてのコメントを取ったのですか? – RichardTheKiwi

+0

それは動作しません.. :(私は理由はわかりませんが、私は2を使用すると、彼らは素晴らしい仕事をします。結果が返されない:S –