Bir değişkenin içeriği kullanarak bir sql sorgu oluşturmak için nasıl

5 Cevap

PHP ve MySQL kullanarak bir sorgu oluşturmak için çalışıyorum,

 $query = "select * from products where product_name = '$item_name'";

$ ITEM_NAME sadece bir isim tutar, ama $ ITEM_NAME bir dizidir ve kullanıcının etkileşime dayalı birden çok isim için çalıştırın ve sonuçlandı satırları almak için sorgu yapmak nasıl, birden fazla isim içerebilir zaman bu işleri.

Şimdiden teşekkürler

5 Cevap

Burada bir IN yan tümcesi içine sokmak için isimleri bir safe listesini oluşturmak olabilir nasıl ...

if (is_array($names) && count($names))
{
    $filter="('".implode("','" array_map('mysql_real_escape_string', $names))."')";
    $sql="select * from products where product_name in $filter";

    //go fetch the results
}
else
{
    //input was empty or not an array - you might want to throw an
    //an error, or show 'no results'
}

array_map mysql_real_escape_string bunu sterilize aracılığıyla her isim çalıştırdıktan sonra adlarının giriş dizisini döndürür. Biz bir IN yan tümcesi ile kullanmak için güzel bir liste yapmak için bu dizi patlar.

Sen her zaman, özellikle istemci tarafında doğrudan gelen, herhangi bir veri sağlamalıdır, düzgün SQL injection saldırıları önlemek için bir sorguda kaçtı.

$vals = implode(',',$item_name);
$query = "select * from products where product_name in (".$vals.");";

Bir deneyin ver.

$query = "select * from products where product_name in(";
foreach($item_name as $name) 
{
    $query .= "'" . $item_name . "', ";
}

$query = substr($query, 0, strlen$query) - 2);
$query .= ");";

(Inkedmn tarafından) ilk cevap olsa gerçekten iyi biridir

foreach($item_name as $name) {
$query = "select * from products where product_name = '$name'";
//whatever you want to do with the query here
}

böyle bir şey yapmak gerek.

(Öğe adlarını teklif vermedi) inkedmn yanıtına bağlı:

$query = 'select * from products where product_name in ("' . implode('", "', $item_name ) . '")';

Eğer bir tam metin arama ile daha iyi olsa da.

http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html