注意:在第 XX 行尝试访问 bool 类型值的数组偏移量

尝试访问第 88 行中 bool 类型值的数组偏移量


尝试访问第 91 行中 bool 类型值的数组偏移量


我在下面标记了这些行,我试图更改查询以防万一,但它似乎不起作用。我查了一下,但找不到解决方案。我还注意到所有这些答案都被否决了,但我是 PHP 的新手,所以我真的不知道要寻找什么。我想这很简单,但我只是没有找到正确的地方。为什么会这样?我该如何解决?


$number = rand(pow(10, 11-1), pow(10, 11)-1);

$stmt = mysqli_prepare($db, "SELECT * FROM accounts WHERE email= ? OR number= ? LIMIT 1");

mysqli_stmt_bind_param($stmt, "ss", $email, $number);

mysqli_stmt_execute($stmt);


$user = mysqli_stmt_fetch($stmt);


function uniqueNum() {

    global $number;

    $number = rand(pow(10, 11-1), pow(10, 11)-1);

    if ($user['number'] === $number) {

        uniqueNum();

    }

}


if ($user) {

    if ($user['email'] === $email) { // Line 88

        array_push($errors, "E-Mail already exists");

    }

    if ($user['number'] === $number) { // Line 91

        uniqueNum();

    }

}

任何形式的帮助表示赞赏!我今年 15 岁,刚开始学习如何填写注册表,所以我很乐意听取一些额外的建议!


慕村9548890
浏览 213回答 1
1回答

SMILET

您将 PDO 与 mysqli 混淆了。Mysqli 要复杂得多,mysqli_stmt_fetch实际上不返回任何值。如果您使用get_resultOOP 风格,您可以使这更简单。然后,您可以使用,例如,fetch_assoc()从结果对象中获取一行。$stmt = $db->prepare("SELECT * FROM accounts WHERE email= ? OR number= ? LIMIT 1");$stmt->bind_param("ss", $email, $number);$stmt->execute();$user = $stmt->get_result()->fetch_assoc();if($user) {    if ($user['email'] === $email) {        array_push($errors, "E-Mail already exists");    }    if ($user['number'] === $number) {        uniqueNum();    }}
打开App,查看更多内容
随时随地看视频慕课网APP