2010-07-16 2 views
5
$GetUid = $dbConnect->prepare("SELECT UID FROM users WHERE username = :username"); 
$GetUid->execute($RegisterData3); 
$UserID = $GetUid->fetch(); 

Почему он возвращает массив, а не строку?PHP PDO fetch возвращает массив?

var_dump ('$ Идентификатор_пользователь') говорит

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

должен быть

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

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

ответ

13

Вы не указали параметр fetch_style. Он возвращает FETCH_BOTH по умолчанию, который представляет собой массив. Ниже перечислены варианты и способы его указания: http://php.net/manual/en/pdostatement.fetch.php

EDIT: он всегда будет возвращать массив, даже если есть только один столбец, потому что строка может содержать несколько атрибутов. Вы можете использовать FETCH_ASSOC, а затем указать имя своего столбца, чтобы получить данные, или, если вы просто используете fetch(), как и вы, массив индексируется как именем столбца, так и номером столбца с индексом 0.

+0

Что относительно 0 штуки? откуда она взялась. еще раз спасибо. –

+0

ooooooo я вижу. thanks2 soryy для вопроса новичков: D –

+1

Попробуйте снова выполнить свой запрос, за исключением слов SELECT * FROM, а не SELECT UID FROM пользователей. результат (скажем, если у вас два столбца в таблице) должен быть примерно таким: array 'UID' => string '45' (length = 2) 0 => string '45' (length = 2) OtherData1 => string '12' (length = 3) 1 => string '12' (length = 3) Если третья и четвертая строки являются вторым столбцом (имена и значения просто составлены мной) И не было бы StackOverflow, если бы не были вопросы о новинках;) – rownage

2

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

2

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