我的PDO提取返回“数组”而不是点数

时间:2014-12-16 17:17:41

标签: php mysql pdo fetch

我正在尝试获取此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;

4 个答案:

答案 0 :(得分:1)

PDO::fetchPDO::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;

通常是最简洁的选择 (fetchfetchObject只需从结果集中提取一行。)

答案 2 :(得分:0)

首先改变:

echo $pointsfetched;

为:

echo json_encode($pointsfetched);

这将显示您以JSON格式提取的数据(如果它正在运行)。然后你可以使用类似的东西:

foreach ($pointsfetched as $point) {
    echo $point;
}

显示所有点。

答案 3 :(得分:0)

更改     $ fetchpoints->使用fetchall() 至     $ fetchpoints-> fetchColumn()

这样你只能得到第一个点作为一个类型的var而不是一个点的数组