Получение одной строки, одного столбца с 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, когда я укажу параметр для fetchColumn.

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

Как вы можете видеть, я пытаюсь сделать это как можно меньше строк.

Вы уверены, что он возвращает любые строки?
$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(); 

Убедитесь, что вы выбрали конкретный 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);