Mysql için bir dizi Passing

3 Cevap php

Şu anda bir değerler dizisi (business_id) var

sağlar ki onun

Array
(
[0] => 12
[1] => 14
[2] => 15
)

Ne veritabanından her business_id için ilgili satır bilgi almak için bu değerin her kullanmak için en iyi yoldur.

O bir sorguda biri olabilir benim soru. Açıkçası, Yapabileceğin

$q = "select * from business where business_id = 12";
$rs = mysql_query($q);

3 Cevap

$ids = array(1, 2, 3, 4);

$ids = join(', ', $ids);
$query = "SELECT * FROM business WHERE business_id IN ($ids)";
// $query => SELECT * FROM business WHERE business_id IN (1, 2, 3, 4)

Her zamanki SQL injection uyarılar hala bunları doğrulamak ya da kaçmak için ilk kimlikleri döngü isteyebilirsiniz, uygulanır. Ayrıca, sayı yerine dizeleri düşünüyorsanız, bu kullanın:

$ids = array('a', 'b', 'c', 'd');

$ids = join("', '", $ids);
$query = "SELECT * FROM business WHERE business_id IN ('$ids')";
// $query => SELECT * FROM business WHERE business_id IN ('a', 'b', 'c', 'd')

Operasyon IN SQL kullanın:

$sql = 'SELECT * FROM business WHERE business_id IN (' . implode(',', $values) . ')';
$rs = mysql_query($sql);

Note: değerleri, sterilize edilmelidir istemci, ya mysql_real_escape_string() or, because these are numbers, you could use intval() ile birlikte gelmesi durumunda. Örneğin:

$ids = array_map('intval', $values);
$sql = 'SELECT * FROM business WHERE business_id IN (' . implode(',', $ids) . ')';
$rs = mysql_query($sql);

Sen ayırıcı olarak virgül kullanarak dizi katılmak ve IN deyimini SQL kullanabilirsiniz.

$businessIds = join(",", $array);
$q = "select * from business where business_id IN ($businessIds)";
$rs = mysql_query($q);