PHP PDO fetch возвращает массив? - PullRequest
5 голосов
/ 16 июля 2010
$GetUid = $dbConnect->prepare("SELECT UID FROM users WHERE username = :username");
$GetUid->execute($RegisterData3);
$UserID = $GetUid->fetch();

почему он возвращает массив, а не строку?

var_dump ('$ UserID') говорит

array
  'UID' => string '45' (length=2)
  0 => string '45' (length=2)

это должно быть

array
  'UID' => string '45' (length=2)

обновить * как насчет 0?откуда это взялось?спасибо за ответы.

Ответы [ 3 ]

13 голосов
/ 16 июля 2010

Вы не указали параметр fetch_style.По умолчанию возвращается FETCH_BOTH, который является массивом.Вот параметры и как их указать: http://php.net/manual/en/pdostatement.fetch.php

РЕДАКТИРОВАТЬ: Кроме того, он всегда будет возвращать массив, даже если есть только один столбец, потому что строка может содержать несколько атрибутов.Вы можете использовать FETCH_ASSOC, а затем указать имя столбца, чтобы получить данные, или, если вы просто используете fetch(), как и вы, массив будет проиндексирован как по имени столбца, так и по номеру столбца с 0 индексами.

2 голосов
/ 16 июля 2010

Результат выбирается построчно, даже если строка содержит один столбец

2 голосов
/ 16 июля 2010

Если вы хотите получить только столбец, вам нужен метод fetchColumn () для PDOStatement.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...