Por que print_r ($ row); só pode ser retornando um número 1?
Pergunta
Eu estou tentando aprender PHP5 e estou tendo alguns problemas com ele. Eu estou trabalhando com instruções preparadas e estou tentando executar o código a seguir:
<?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);
}
}
?>
Eu tenho 2 linhas ele deve retornar cada um contendo um id, login_name, login_password e uma login_level.
Quando a instrução é executado ele só imprime o seguinte:
11
Qualquer ajuda seria muito apreciada.
Solução
O buscar () Método retornos TRUE
, FALSE
, ou NULL
dependendo se ele conseguiu buscar os dados. Ela não retorna os dados em uma matriz. Em vez disso, coloca os resultados em variáveis ??vinculados pelo bind_result () método.
Outras dicas
Ele retorna 1 porque 1 é TRUE no PHP.
O que você deve fazer é vincular uma variável com o método [bind_result][1]
e depois fazer:
while ($stmt->fetch()) {
printf ("%s\n", $variable);
}
Um grande exemplo é na href="http://is.php.net/manual/en/mysqli-stmt.bind-result.php" rel="nofollow noreferrer"> ligam página de documentação
Para ser capaz de conseguir que desta forma você primeiro precisa vincular as variáveis ??resultado como este:
$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);
}