У меня есть запрос 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);