2009-08-31 4 views
1

에 배열을 전달 나는 현재 (business_id의) 값의 배열는 MySQL의

가 말할 수있는 그

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

무엇에 대한 관련 행 정보를 얻기 위해이 값을 각각 사용하는 가장 좋은 방법입니다 데이터베이스의 각 business_id.

하나의 쿼리에서 하나가 될 수 있습니까? 내 질문입니다. 물론, 당신은

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

답변

11
$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) 

일반적인 SQL 주입 경고 는 아직 확인하거나 탈출 먼저 IDS를 통해 당신이 루프 할 수 있습니다 적용됩니다. 또한 숫자 대신 문자열을 사용해야하는 경우 다음을 사용하십시오.

$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') 
7

동작에서 SQL을 사용 할 수있는 :

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

참고 :이 숫자이기 때문에 값이 어느 mysql_real_escape_string() 또는, 그들은 소독해야 클라이언트에서 오는 경우 intval()을 사용할 수 있습니다. 예 :

3

쉼표를 구분 기호로 사용하여 배열을 결합하고 SQL IN 문을 사용할 수 있습니다.

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