2009-08-31 8 views
1

に配列を渡す私は現在、(business_idの)値の配列は、MySQL

が言うことができますを持っているその

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

何のための関連する行の情報を取得するために、これらの値のそれぞれを使用するための最良の方法ですがデータベースからの各business_id。

1つのクエリで1つになることができますか私の質問です。もちろん、あなたは

$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()を使用できます。例:

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

セパレータとしてコンマを使用して配列を結合し、SQL IN文を使用できます。

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