PHP ile MySQL Sorgusunda Çoklu Arama Yapma
Merhaba PT
- items
-------------------------------------
| item_id | item_name | item_filter |
-------------------------------------
| 1 | prototurk | 1,3,4 |
| 2 | soru | 1 |
| 3 | cevap | 6,3 |
| 4 | alani | 1,2,3 |
-------------------------------------
$itemSQL = "SELECT * FROM items";
$itemQuery = $db -> prepare($productSQL);
$itemQuery -> execute();
$itemRows = $itemQuery -> fetchAll(PDO::FETCH_ASSOC);
şeklinde bir tablom var. Ben bu tabloda item_filter
kolonumun içindeki virgülle ayrılmış verilerden sorguda filtreleme yapmak istiyorum.
Örneğin 1 ve 3'ü gönderdiysem 1 ve 4 ID numaralı verinin dönmesini,
Sadece 1 gönderdiysem 1 - 2 - 4 ID numaralı verinin dönmesini istiyorum.
Eğer item_filter kolonunun içindeki veriler virgülle ayrılmış bir dizi ise, bu diziyi explode fonksiyonu ile bir diziye dönüştürebilirsiniz.
Örneğin:
$filterValues = explode(",", $row['item_filter']);
Bu sayede $filterValues dizisi içinde item_filter kolonundaki değerleri bulabilirsiniz. Daha sonra bu dizi içinde arama yaparak ilgili verileri filtreleyebilirsiniz.
Örneğin:
foreach ($itemRows as $row) {
$filterValues = explode(",", $row['item_filter']);
if (in_array(1, $filterValues) && in_array(3, $filterValues)) {
// Bu satırda 1 ve 3 değerleri bulunuyor, bu veriyi kullanabilirsiniz
}
else if (in_array(1, $filterValues)) {
// Bu satırda sadece 1 değeri bulunuyor, bu veriyi kullanabilirsiniz
}
// Diğer filtreleme seçeneklerini burada yazabilirsiniz
}
Bu sayede $itemRows dizisindeki verileri istediğiniz gibi filtreleyebilirsiniz. Umarım bu bilgi size yardımcı olur.