为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕村9548890 2023-06-18 16:17:15
尝试访问第 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 岁,刚开始学习如何填写注册表,所以我很乐意听取一些额外的建议!
查看完整描述

1 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

您将 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();

    }

}


查看完整回答
反对 回复 2023-06-18
  • 1 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号