$sql = "SELECT name FROM people WHERE id = '$id'";
$array = array();
$q = $pdo->prepare($sql);
$q->execute();
foreach ($pdo->query($sql) as $row) {
$array[] = $row;
}
我的结果是:
array(4) {
[0]=>
array(2) {
["name"]=>
string(4) "fred"
[0]=>
string(4) "fred"
}
[1]=>
array(2) {
["name"]=>
string(3) "sam"
[0]=>
string(3) "sam"
}
[2]=>
array(2) {
["name"]=>
string(4) "alan"
[0]=>
string(4) "alan"
}
[3]=>
array(2) {
["name"]=>
string(63) "john"
[0]=>
string(63) "john"
}
}
但我需要:
Array
(
[fred] => fred
[sam] => sam
[alan] => alan
[john] => john
)
我试过例如:
foreach ($pdo->query($sql) as $key => $row) {..
以及
foreach ($pdo->query($sql) as $row) {
$array[] = $row;
$row = array_combine(array_values($row), array_values($row));
}
但我总能得到相同的结果......
答案 0 :(得分:4)
使用 fetchAll
$q = $pdo->prepare($sql);
$q->execute();
$result = $q->fetchAll();
print_r($result);
答案 1 :(得分:1)
使用fetchAll()
但不是一个香草的,而是一个名为PDO::FETCH_COLUMN的秘密论据
$sql = "SELECT name FROM people WHERE id = ?";
$q = $pdo->prepare($sql);
$q->execute([$id]);
$array = $q->fetchAll(PDO::FETCH_COLUMN);
它将为您提供一个名称如此
的单维数组Array
(
[0] => fred
[1] => sam
[2] => alan
[3] => john
)
请注意,您使用的是准备好的语句完全错误的方式使您的代码容易受到SQL注入攻击。它在上面的代码中修复。
如果您坚持同时获取密钥和值,请按以下步骤更改代码
$sql = "SELECT name, name FROM people WHERE id = ?";
$q = $pdo->prepare($sql);
$q->execute([$id]);
$array = $q->fetchAll(PDO::FETCH_KEY_PAIR);
它会按照你的要求给你准确的数组
答案 2 :(得分:0)
进行以下更改:
Red