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

¿por qué no devuelve la matriz una cadena?PHP PDO fetch devuelve una matriz?

var_dump ('$ ID de usuario') dice

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

Cabe

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

actualización * qué pasa con el 0? de donde viene? gracias por las respuestas

Respuesta

13

No especificó un parámetro fetch_style. Devuelve FETCH_BOTH de forma predeterminada, que es una matriz. Aquí están las opciones y cómo especificarlo: http://php.net/manual/en/pdostatement.fetch.php

EDITAR: Además, siempre devolverá una matriz, incluso si solo hay una columna, porque una fila puede contener múltiples atributos. Puede usar FETCH_ASSOC y luego especificar su nombre de columna para obtener los datos o, si solo usa fetch() como lo hizo, la matriz se indexa tanto por el nombre de columna como por el número de columna indexada en 0.

+0

¿qué ocurre con la cosa 0? de dónde viene gracias de nuevo. –

+0

ooooooo veo. thanks2 soryy para la pregunta de novato: D –

+1

Intente hacer su consulta de nuevo, excepto decir SELECT * FROM users en lugar de SELECT UID FROM users. el resultado (digamos si tienes dos columnas en tu tabla) debería ser algo como esto: array 'UID' => cadena '45' (longitud = 2) 0 => cadena '45' (longitud = 2) OtherData1 => cadena '12' (longitud = 3) 1 => cadena '12' (longitud = 3) Donde la tercera y la cuarta líneas son la segunda columna (los nombres y valores están hechos por mí) Y no habría una StackOverflow si no fuera por preguntas de novatos;) – rownage

2

Si desea obtener solo la columna, necesita el método fetchColumn() de PDOStatement.

2

El resultado se obtiene línea por línea, incluso si la línea contiene una sola columna

Cuestiones relacionadas