Php / Pdo - 获取每一行的内容

时间:2014-04-02 20:38:07

标签: php mysql sql pdo

嘿,我有这个表结构:

enter image description here

使用此代码,我想获得三个变量中的id,用户名和点击次数:

$stmt = $dbh->prepare("SELECT username FROM tracker WHERE username='".$data."'");
$stmt->execute();

$row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_LAST);
$id = $row['0'];
$username = $row['1'];
$clicks = $row['2'];

我的结果:

$id // slkdflskdfskd
$username // null
$clicks // null

我的问题,为什么?我做错了什么?..

2 个答案:

答案 0 :(得分:3)

您只检索用户名列。

$stmt = $dbh->prepare("SELECT username FROM tracker WHERE username='".$data."'");

您应该将其更改为包含您要使用的所有列:

$stmt = $dbh->prepare("SELECT id, username, clicks FROM tracker WHERE username='".$data."'");

此外,如果你想更清洁一点,你应该获取一个相关的数组。这样,您就可以按列名称解析$row

更改

$row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_LAST);

$row = $stmt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_LAST);

然后您可以从行中选择列:

$row['username'] //slkdflskdfskd

答案 1 :(得分:2)

您只需在SELECT语句中指定这些数据库列:

$stmt = $dbh->prepare("SELECT id, username, clicks FROM tracker WHERE username='".$data."'");

您也可以使用*选择全部,但这不是最佳做法,因为数据库结构总是随时间而变化。这有点懒。返回数组中的数据顺序可能与您分配的变量顺序不匹配。等等......无论如何,你应该知道,如果你想要返回所有列,你可以这样做:

"SELECT * FROM tracker WHERE username='".$data."'"