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

Php 注意:尝试访问第XX行中bool类型值的数组偏移量,php,mysqli,Php,Mysqli,试图访问第88行bool类型值的数组偏移量 试图访问第91行bool类型的值上的数组偏移量 我在下面的行上做了标记,我试图更改查询,以防万一,但它似乎不起作用。我查了一下,就是找不到解决办法。我还注意到所有这些答案都被否决了,但我是PHP的新手,所以我真的不知道该找什么。我想这很简单,但我只是找不到合适的地方。为什么会这样?我怎样才能修好它 $number = rand(pow(10, 11-1), pow(10, 11)-1); $stmt = mysqli_prepare($db, &quo

试图访问第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岁了,我正在学习如何填写登记表,所以我很乐意听取一些额外的建议

你把PDO和mysqli搞混了。Mysqli要复杂得多,
Mysqli\u stmt\u fetch
实际上并不返回任何值。如果使用
get\u result
和OOP样式,可以使这一过程变得更简单。然后可以使用例如,
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();
    }
}

我想第81行的意思是第88行?噢,天哪,对不起!是的,81行是88行!我将尝试解决这个问题。您还应该从函数will
global$user修复问题?函数mysqli_stmt_fetch返回一个布尔值,而不是行。