v2.5.2
Giriş yap

PHP ile MySQL Sorgusunda Çoklu Arama Yapma

redline
472 defa görüntülendi ve 1 kişi tarafından değerlendirildi

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.

h4ckdr0
521 gün önce

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.