Подтвердить что ты не робот

Получение одной строки, одного столбца с 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);

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

4b9b3361

Ответ 1

Вы уверены, что он возвращает строки?
$stmt->fetchColumn()
это правильный способ получить одно значение, так что либо вы, вероятно, не привязывали параметр: user, либо просто не возвращали строки.

Ответ 2

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

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

$sth->execute($data);

$result=$sth->fetchColumn();

Ответ 3

Я не уверен, почему так много людей испортили это:

$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() не вернет массив.

Ответ 4

Вы уже подготовили выражение? (До $stmt->execute())

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

Ответ 5

Вы можете использовать это:

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