Php PDO Fetch语句仅检索第一列

Php PDO Fetch语句仅检索第一列,php,mysql,pdo,Php,Mysql,Pdo,正如标题所述,我只能抓取id列,其他列的索引错误未定义 我的代码: if(isset($_SESSION['id'])) { $presh = $_SESSION['id']; $stmt = $pdo->prepare("SELECT id FROM users WHERE id = :id"); $id = $presh; $stmt->execute(array(':id'=>$id)); $accountinfo = $stmt-

正如标题所述,我只能抓取id列,其他列的索引错误未定义

我的代码:

if(isset($_SESSION['id'])) {
    $presh = $_SESSION['id'];
    $stmt = $pdo->prepare("SELECT id FROM users WHERE id = :id");
    $id = $presh;
    $stmt->execute(array(':id'=>$id));
    $accountinfo = $stmt->fetch(PDO::FETCH_ASSOC);
}
稍后在我的代码中,我引用了如下内容:

Karma <span id="kcurrent"><?php echo $accountinfo["karmacurrent"]; ?></span> | <span id="ktotal"><?php echo $accountinfo["karmatotal"]; ?></span>
Karma|

行确实存在并且已填充,我做错了什么?

您只能选择
id
列,因为这是查询中的全部内容

试试这样的

if (isset($_SESSION['id'])) {
    $presh = $_SESSION['id'];
    $stmt = $pdo->prepare("SELECT id, karmacurrent FROM users WHERE id = :id");

    $id = $presh;

    $stmt->execute(
        array(
            ':id'=>$id
        )
    );

    $accountinfo = $stmt->fetch(PDO::FETCH_ASSOC);
}

基本上,您只是从表中而不是从其他列中检索
ID

Shoot,只需要修改SQL查询以选择*,@0n35获取列时最好不要使用*,而是按名称选择所有列,例如选择列1、列2,
表\u name
中的第3列@Darren您能解释一下原因吗?@inetmantom因为它会给您的查询增加不必要的加载时间,特别是当它们很大时。想象一下,如果你去商店只想买一些牛奶,但你使用了“全买”(
*
)选项,会使查询变得相当大,不是吗?你应该只选择你需要的,而不是你有权选择的!另见