PDO :: FETCH_UNIQUEフラグを使用して、次のPDOステートメントを使用して、結果配列を一意の行IDで索引付けします。PHP PDO :: FETCH_UNIQUEを使用して結果配列にユニークなインデックスを保持することはできますか?
<?php
$statement = $conn->prepare("
SELECT
unique_id, field_1, field_2, field_3
FROM
table
WHERE
field_1 = 'foo'
AND field_2 = ?
ORDER BY
field_3
");
if($statement->execute(array($field_2_value)))
{
$resultArray = $statement->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_UNIQUE);
}
?>
$ resultArray:
Array
(
[123] => Array
(
[field_1] => foo
[field_2] => someVal
[field_3] => bar
)
[234] => Array
(
[field_1] => foo
[field_2] => someVal
[field_3] => car
)
[345] => Array
(
[field_1] => foo
[field_2] => someVal
[field_3] => dog
)
)
彼らがそうであるように配列インデックスの両方を保持し、このような行データに一意の行のIDを保持する方法があります:
Array
(
[123] => Array
(
[unique_id] => 123
[field_1] => foo
[field_2] => someVal
[field_3] => bar
)
[234] => Array
(
[unique_id] => 234
[field_1] => foo
[field_2] => someVal
[field_3] => car
)
[345] => Array
(
[unique_id] => 345
[field_1] => foo
[field_2] => someVal
[field_3] => dog
)
)
は、
私は二次的なループでこれを行うことができたが、これがオプションの場合はfetchAll()
でもっときれいに感じるだろう。
_foreach_ループを使用していて、各_key_を_value_に加えて使用する方法をお探しですか? –
@SamOnelaはい、私は現在、結果の配列がこのコードベースでさまざまな方法で使用され、互換性を維持するためにキーと値の両方を保持する必要があるレガシー関数を書き直しています。 – bbeckford