如何更改此foreach语句,以便它将构建一个包含特定列中所有行的数组?它目前只将“first_name”列中的最后一行添加到数组中。
try {
$stmt = $conn->prepare("SELECT * FROM student");
$stmt->execute();
} catch(PDOException $e) {
echo $e->getMessage();
}
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
$first_names = array();
foreach ($rows as $row) {
$first_names = $row['first_name'];
}
答案 0 :(得分:1)
你忘了括号。你需要这样做:
$first_names[] = $row['first_name'];
否则,您将$ first_names变量重新创建为单个字符串,并在循环的每次迭代时覆盖它。
答案 1 :(得分:1)
您目前正在覆盖您需要将其填充到数组中的变量:
$first_names[] = $row['first_name'];
答案 2 :(得分:1)
你可以试试这个
array_push($first_names, $row['first_name']);
或
$first_names[] = $row['first_name'];
代码中的问题是您一次又一次地覆盖自己的变量。
答案 3 :(得分:1)
您必须在变量`
中添加括号$first_names[] = $row['first_name'];`
我也可以建议这样做一个更清洁的方法吗?
您似乎在查询中使用了try / catch,并且可能在大多数查询中使用它...
你实际上应该使用
$pdo = new PDO("mysql:host=xxxxx;dbname=xxxxxxxx", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // < - - - THIS
所以现在您不需要在代码中添加try / catch。
如果查询失败,如果你不想做其他事情,通常你只需要使用try / catch。
享受:)