¿Por qué sería print_r ($ row); solo regresa un número 1?
Pregunta
Estoy tratando de aprender PHP5 y tengo un par de problemas con él. Estoy trabajando con declaraciones preparadas y estoy tratando de ejecutar el siguiente código:
<?php
require_once 'includes/config.php';
$conn = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) or
die('There was a problem connecting to the database.');
$query = "SELECT * FROM user_table";
if($stmt = $conn->prepare($query)) {
$stmt->execute();
while ($row = $stmt->fetch()) {
print_r ($row);
}
}
?>
Tengo 2 filas que debería devolver, cada una con un ID, login_name, login_password y login_level.
Cuando se ejecuta la instrucción, solo imprime lo siguiente:
11
Cualquier ayuda sería muy apreciada.
Solución
El método fetch () devuelve TRUE
, FALSE
o NULL
dependiendo de si logró obtener los datos. No devuelve los datos en una matriz. En su lugar, coloca los resultados en variables vinculadas por bind_result () método.
Otros consejos
Devuelve 1 porque 1 es VERDADERO en PHP.
Lo que debe hacer es vincular una variable con el método [bind_result] [1]
y luego hacer:
while ($stmt->fetch()) {
printf ("%s\n", $variable);
}
Un gran ejemplo está en la página de documentación de resultados enlace.
Para poder hacerlo de esta manera, primero debe vincular las variables de resultado de esta manera:
$stmt->execute();
// bind the result variables in order
$stmt->bind_result($id, $login_name, $login_password, $login_level);
// then get results
while ($stmt->fetch()) {
var_dump($id, $login_name, $login_password, $login_level);
}