我有一个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);
正如您所看到的,我试图尽可能少地进行此操作。
答案 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;