0


4

私は現在値の配列(business_id)を持っています

それを言うことができます

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

データベースから各business_idに関連付けられた行情報を取得するためにこれらの各値を使用する最善の方法は何ですか。

それは私の質問です。 明らかに、あなたはできる

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

3 Answer


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インジェクションの警告はまだ適用されます、あなたはそれらを検証するかエスケープするために最初にIDをループしたいかもしれません。 また、数字ではなく文字列が必要な場合は、これを使用してください。

$ 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 IN操作を使用します。

$ 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 = "*ビジネスからの選択*ここでbusiness_id IN($ businessIds)"; $ rs = mysql_query($ q);