为什么在php中执行SQL查询后,echo不返回ID?

时间:2018-10-02 18:38:13

标签: php sql mysqli

我在某些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"];
}

我知道找到了该用户,是因为第二个if内部的代码执行了,并且我也进行了手动检查以确保。我使用的语法有问题吗?回声只返回“ id:”,即使用户存在,数据库也不会返回ID。

我尝试使用单引号作为id,也尝试使用大写字母,但均不返回任何内容。

1 个答案:

答案 0 :(得分:3)

根据the documentationfetch_row()用于“将结果行作为枚举数组获得”。这将导致这样的数组:

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

代替use fetch_assoc(),它将“以关联数组的形式获取结果行”,并为您提供类似的信息:

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

请注意,如果您在开发环境中enabled some error reporting,则可能会看到“未定义索引”通知,这可能有助于您解决此问题。