使用第一组代码,我可以打印数组,但第二段旨在将数组存储到变量中,但这不起作用,有什么建议吗?数组为空?
$stmt = $conn->prepare("SELECT admin_name FROM adminuser_tbl");
if ($stmt->execute()) {
while ($row = $stmt->fetch()) {
print_r($row);
}
}
低于不工作
$stmt = $conn->prepare("SELECT admin_name, adminuser_id FROM adminuser_tbl");
if ($stmt->execute()) {
$user_list = array();
while ($row = $stmt->fetch()) {
$user_list[$row->adminuser_id] = $row->admin_name;
}
}
如果我打印第一段的数组结果,它们都设置为[0]???
Array ( [admin_name] => User1 [0] => User1 ) Array ( [admin_name] => User2 [0] => User2 ) Array ( [admin_name] => User3 [0] => User3 ) Array ( [admin_name] => User4 [0] => User4 )
如果要将行作为对象提取,则需要设置提取模式。默认值为PDO::FETCH_BOTH
,它为您提供了一个包含整数和命名键的数组。(查看您的打印输出)
$stmt = $conn->prepare("SELECT admin_name, adminuser_id FROM adminuser_tbl");
if ($stmt->execute()) {
$stmt->setFetchMode(PDO::FETCH_OBJ);
$user_list = array();
while ($row = $stmt->fetch()) {
$user_list[$row->adminuser_id] = $row->admin_name;
}
}
或者只使用foreach循环,因为PDOStatement实现了Traversable接口。
$stmt = $conn->prepare("SELECT admin_name, adminuser_id FROM adminuser_tbl");
if ($stmt->execute()) {
$stmt->setFetchMode(PDO::FETCH_OBJ);
$user_list = array();
foreach ($stmt as $row) {
$user_list[$row->adminuser_id] = $row->admin_name;
}
}
对于其他获取模式,请查看此处:pdo.constants