我在某些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,也尝试使用大写字母,但均不返回任何内容。
答案 0 :(得分:3)
根据the documentation,fetch_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,则可能会看到“未定义索引”通知,这可能有助于您解决此问题。