0

I have the following code in some php:

$stmt = $connection->prepare("SELECT * FROM users where email = ?");
$stmt->bind_param('s', $email);
if($stmt->execute()){
    $result = $stmt->get_result();
    $isUserFound = $result->num_rows == 1;
    if(isUserFound){
        $row = $result->fetch_row();
        echo "<br>id: " . $row["id"];
}

I know that the user is found because the code inside the second if executes and I have done a manual check also to make sure. Is there something wrong with the syntax I have used? The echo returns just "id: " with no id from the database even though the user exists.

I have tried using single quotes for the id and also tried in capital letters, all return nothing.

a.cayzer
  • 289
  • 4
  • 22

1 Answers1

3

According to the documentation, fetch_row() is used to "get a result row as an enumerated array." This will result in an array like this:

$row = [
    0 => "2342",
    1 => "user@example.com",
    2 => "User",
];

Instead use fetch_assoc() which will "fetch a result row as an associative array" and give you something like this:

$row = [
    "id" => "2342",
    "email" => "user@example.com",
    "name" => "User",
];

Note that if you enabled some error reporting in your development environment you would have seen "undefined index" notices that might have helped you solve this issue.

miken32
  • 42,008
  • 16
  • 111
  • 154