PHP iken Dizilerin den Döngüler

3 Cevap php

Birden kimlik numaraları ile üye adları ve bir alan içeren bir tablo var. Ben kimliği alanlarını herhangi değerler dizisindeki herhangi değerleri ile örtüşen sonuçlar döndüren bir sorgu oluşturmak istiyorum.

For example: lastname: Smith firstname: John id: 101, 103

I Dizi 1. olan değerlerle 101, 102, 103

Ben listelenen birden kimlikleri ile kendi kimliği alanında listelenen değerleri 101 veya 102 veya 103 olan tüm üyeler çıkış sorgu istiyorum.

Array (  [0] => 101
         [1] => 102 
         [2] => 103 )

$sql="SELECT firstname, lastname, id
      FROM members WHERE id LIKE '%".$array_num_1."%'";
$result=mysql_query($sql);

while ($rows=mysql_fetch_array($result)) {
       echo $rows['lastname'].', '.$rows['firstname'].'-'.$rows['id'];
      }

Bunu basitleştirmek için çalıştı. Kimlikleri aslında başka bir tabloda saklanır, ve ben bu tablodan dizi yarattı.

$array_num_1 = array();
$sql_id="SELECT id FROM id_table WHERE id < 200";
$result_id=mysql_query($sql_id);
while($rows_id=mysql_fetch_array($result_id)){;
      $array_num_1[] = $rows_id['id'];
}

3 Cevap

Normalize your database. Make these ids into separate table.

Edit: Ve then aşağıda cevaplar kullanın

Eğer bu şekilde yapmak gerekir:

$sql = "SELECT firstname, lastname, id FROM members WHER id IN (" . implode(', ', $array) . ")"

@ Cletus yaptığı açıklamada söylediği gibi olsa da, veritabanı bu tür bir şey için yapılır. Sert bir array kodlama şeyler yapmanın optimal bir yol gibi görünüyor.

Muhtemelen arıyorsanız IN:

SELECT firstname, lastname, id FROM members WHERE id IN (1, 2, 3);

Tabii ki, örneğin, (1, 2, 3) dinamik yaratabilir çöktüğünü kullanılmıştır.


Tüh, ben sadece senin db şema yanlış var olduğunu fark etti. Diğerleri tavsiye gibi, bunu normalleştirmek gerekir.