Sé cómo capturar un PDO de la matriz, pero ¿cómo puedo recoger datos a partir de ella como se hace con MySQLi del fetch_array?

Por ejemplo,

MySQLi

$query = $mysqli->query("SELECT * FROM `foo` WHERE `ID`='1'");
$array = $query->fetch_array();

De obtener un resultado

echo $array['bar'];

Cómo hacer esto con PDO? Entiendo que usted puede hacer esto:

PDO

$query = $pdo->prepare("SELECT * FROM `foo` WHERE `ID`='1'");
$query->execute();
$result = $query->fetchAll();

Obtener el resultado

echo $result['bar'];

No devolver el mismo MySQLi hizo

Estoy haciendo algo mal, y es allí una manera de hacer esto?

  • Leer fetch_style parámetro php.net/manual/en/pdostatement.fetch.php PDO::FETCH_ASSOC devuelve un array indexado por el nombre de la columna como devuelto en su conjunto de resultados
  • Usted tiene que entender, que mientras el fetch_array() itera a través de todo el conjunto de resultados y devuelve una fila a la vez, fetchAll() devuelve el conjunto de resultados completo. Hacer esto en su lugar: $query->fetch(PDO::FETCH_ASSOC)
  • Gracias por la orientación.
  • Algo que recuerdo de mi PHP días en los que usted puede encontrar útil es el uso de print_r() y/o var_dump() a la divina menudo pobremente documentado estructuras de datos PHP lanza en usted.
  • Nada está mal documentado aquí. El primer comentarista del enlace apunta a una correcta documentación.
  • En este caso no, no.

1 Comentario

  1. 6

    fetchAll() es no la misma como fetch_array().

    Desea fetch() para obtener uno fila, no fetchAll() que obtiene TODOS filas.

    $result = $query->fetch(PDO::FETCH_ASSOC);
    • Ah, ya veo. Soy nuevo en el PDO como quiero zanja MySQL y MySQLi todos juntos, como usted probablemente puede ver. Muchas gracias.
    • +1 yo voy a añadir que usted debería ser capaz de omitir la PDO::FETCH_ASSOC porque el valor predeterminado es devolver una matriz indexada tanto de forma asociativa y numéricamente.
    • Es el PDO:: antes de la FETCH_* absolutamente necesario? Y ¿por qué? Creo que en MySQLi sólo se necesita analizar en FETCH_*
    • PDO es el nombre de la clase, y el FETCH_* cosa es una constante.
    • es una constante de la PDO clase. PDO::FETCH_ASSOC es la forma de acceder a él. Es 100% necesario 🙂
    • Pero MySQLi es también una clase, por qué no, que necesitan ser MYSQLI::FETCH_* ?
    • :: significa estática de acceso. Utilice -> (por ejemplo. $query->). Que es objeto-contexto. Las constantes se puede acceder de forma estática en una clase.
    • Muy bien entonces, gracias chicos 🙂

Dejar respuesta

Please enter your comment!
Please enter your name here