我正在尝试获取此PDO,以显示用户拥有的点数。 但是,我只是得到输出“数组”。我在这里做错了什么,是否有更容易从列中获取单行的方法?
// CONNECT TO DATABASE
require 'database.php';
// FETCH POINTS
$usernamedb = $_SESSION['user'];
echo $usernamedb;
$fetchpoints = $db->prepare("SELECT points FROM login WHERE username = '$usernamedb'");
$fetchpoints->execute();
$pointsfetched = $fetchpoints->fetchAll();
echo $pointsfetched;
答案 0 :(得分:1)
对PDO::fetch
或PDO::fetchAll
的所有来电都会返回一个数组。如果您只想从第一行获取一列,则需要使用PDO::fetchColumn
//Use 0 to get the first column
$pointsfetched = $fetchpoints->fetchColumn(0);
PDO::fetch
将始终返回下一行的数组。 (或错误)
PDO::fetchAll
将始终返回一个行数组数组。 (或错误)
答案 1 :(得分:1)
如果您只想从查询中获取单个值,请不要使用fetchAll()
来获取数组/列表。
$pointsfetched = $fetchpoints->fetchObject()->points;
通常是最简洁的选择
(fetch
和fetchObject
只需从结果集中提取一行。)
答案 2 :(得分:0)
首先改变:
echo $pointsfetched;
为:
echo json_encode($pointsfetched);
这将显示您以JSON格式提取的数据(如果它正在运行)。然后你可以使用类似的东西:
foreach ($pointsfetched as $point) {
echo $point;
}
显示所有点。
答案 3 :(得分:0)
更改 $ fetchpoints->使用fetchall() 至 $ fetchpoints-> fetchColumn()
这样你只能得到第一个点作为一个类型的var而不是一个点的数组