次の配列を想定しています。
$users = array(
// User ID => Username
'72' => 'jack192',
'23' => 'robert1984',
'253' => 'mary111',
'4' => 'jason92'
);
および次の表:
Table myTable:
username | colFoo | colBar
次のようなクエリを実行したいのですが、テーブルにない列 (配列からのユーザー ID) を出力に追加したいと思います。
$user_string = implode("','", array_values($users));
$query = "SELECT username, colFoo, colBar FROM myTable WHERE username IN ('$user_string')";
これは通常、次のように出力されます。
Array
(
[0] => Array
(
[username] => jack192
[colFoo] => 98
[colBar] => 7
)
[1] => Array
(
[username] => robert1984
[colFoo] =>
[colBar] => 2
)
[2] => Array
(
[username] => mary111
[colFoo] => 41
[colBar] => 9
)
[3] => Array
(
[username] => jason92
[colFoo] => 46
[colBar] => 13
)
)
user_id
ただし、元の配列のキーに対応する出力を次のようにしたいと思います。
Array
(
[0] => Array
(
[username] => jack192
[colFoo] => 98
[colBar] => 7
[user_id] => 72
)
[1] => Array
(
[username] => robert1984
[colFoo] =>
[colBar] => 2
[user_id] => 23
)
[2] => Array
(
[username] => mary111
[colFoo] => 41
[colBar] => 9
[user_id] => 253
)
[3] => Array
(
[username] => jason92
[colFoo] => 46
[colBar] => 13
[user_id] => 4
)
)
私は基本的に、ユーザーの ID をクエリにフィードし、MySQL がそれ以上何もしないで、出力としてそれを取得したいと考えています。PHPコードを追加せずに純粋にSQLでこれを行うことは可能ですか?
注: このデータを取得している DB への書き込みアクセス権がなく、スキーマを作成していないため、
user_id
フィールドなどを追加することはできません。