获取单行,单列与PDO
我有一个MySQL查询,目标单行中的单个列
"SELECT some_col_name FROM table_name WHERE user=:user"
在执行语句$stmt->execute();
我如何将这个单元格直接放入一个没有循环的variables中? 换句话说,如何得到
from $stmt->execute(); to $col_value = 100;
我试了下面的2,但都没有工作..列是原始表中的数字4,但我假设自从我在select语句我只select它,它应该是1时,我指定fetchColumn的参数。
$col_value = $stmt->fetchColumn(); $col_value = $stmt->fetchColumn(0);
正如你所看到的,我正在努力尽可能地做到尽可能less的几行。
你确定它正在返回任何行吗?
$stmt->fetchColumn()
是获取单个值的正确方法,因此您可能没有绑定:user参数,或者它只是不返回任何行。
$sql='SELECT some_col_name FROM table_name WHERE user=?'; $sth=$pdo_dbh->prepare($sql); $data=array($user); $sth->execute($data); $result=$sth->fetchColumn();
我不确定为什么这么多人搞砸了:
$stmt = $dbh->prepare("SELECT `column` FROM `table` WHERE `where`=:where"); $stmt->bindValue(':where', $MyWhere); $stmt->execute(); $SingleVar = $stmt->fetchColumn();
确保你在查询中select了一个特定的column
,而不是*
或者你需要在fetchColumn()
指定列顺序号,例如: $stmt->fetchColumn(2);
这通常不是一个好主意,因为数据库中的列可能由某人重组…
这将只适用于unique 'wheres'
。 fetchColumn()
不会返回一个数组。
你先准备好了吗? (在$stmt->execute()
)
$stmt = $db->prepare("SELECT some_col_name FROM table_name WHERE user=:user");
你可以使用这个:
$stmt->fetch(PDO::FETCH_COLUMN, $number_of_column);