使用PDO获取单行,单列

时间:2009-11-03 11:18:05

标签: php mysql database pdo

我有一个mysql查询,它针对单行中的单个列

"SELECT some_col_name FROM table_name WHERE user=:user"

执行语句$stmt->execute();之后如何将这个单个单元格直接放入没有循环的变量中?换句话说,如何获得

from $stmt->execute();

to $col_value = 100;

我尝试了下面的2,但都没有工作..列是原始表中的数字4,但我假设因为在我的select语句中我只选择它,当我指定参数时它应该是1 for fetchColumn。

$col_value = $stmt->fetchColumn();
$col_value = $stmt->fetchColumn(0);

正如您所看到的,我试图尽可能少地进行此操作。

6 个答案:

答案 0 :(得分:32)

你确定它会返回任何行吗?
$stmt->fetchColumn()
是获取单个值的正确方法,因此您可能没有绑定:user参数,或者它只是没有返回任何行。

答案 1 :(得分:10)

$sql='SELECT some_col_name FROM table_name WHERE user=?';

$sth=$pdo_dbh->prepare($sql);
$data=array($user);

$sth->execute($data);

$result=$sth->fetchColumn();

答案 2 :(得分:1)

我不确定为什么这么多人搞砸了这个:

$stmt = $dbh->prepare("SELECT `column` FROM `table` WHERE `where`=:where"); 
$stmt->bindValue(':where', $MyWhere);
$stmt->execute();
$SingleVar = $stmt->fetchColumn();

确保您在查询中选择了特定column而不是*,或者您需要在fetchColumn()中指定列顺序编号,例如:$stmt->fetchColumn(2);这通常不是一个好主意,因为数据库中的列可能会由某人重新组织......

这只适用于unique 'wheres'; fetchColumn()不会返回数组。

答案 3 :(得分:0)

您是否先准备好了声明? (在$stmt->execute()之前)

$stmt = $db->prepare("SELECT some_col_name FROM table_name WHERE user=:user");

答案 4 :(得分:0)

你可以用这个:

$stmt->fetch(PDO::FETCH_COLUMN, $number_of_column);

答案 5 :(得分:0)

要获取最后一个插入时,请将DESC Limit 1添加到sql语句。

$sql = "SELECT `some_col_name` FROM table_name\n"

    . "ORDER BY `some_col_name` DESC\n"

    . "LIMIT 1";

$stmt = $conn->prepare($sql);
$result = $stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
//convert the array content to string and store in variable 
$col = implode(" ", $row);
echo $col;