获取单行,单列与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);