Ответ 1
Вы уверены, что он возвращает строки? $stmt->fetchColumn()
это правильный способ получить одно значение, так что либо вы, вероятно, не привязывали параметр: user, либо просто не возвращали строки.
У меня есть запрос 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);