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

警告 :: 无效对象或资源 mysqli_stmt。什么意思和解决方案?

警告 :: 无效对象或资源 mysqli_stmt。什么意思和解决方案?

PHP
GCT1015 2023-05-12 15:41:31
以下代码抛出神秘的警告。我不明白他们的意思。这些错误表明什么以及如何消除它们?require "conn.php";$q = mysqli_stmt_init($dbconn);$query = "SELECT users.userid FROM users WHERE users.email = ? ";mysqli_stmt_prepare($q, $query);mysqli_stmt_bind_param($q, "s", $email);mysqli_stmt_execute($q);$result = mysqli_stmt_get_result($q);if (mysqli_num_rows($result) == 0) {    $q = mysqli_stmt_init($dbconn);    $query = "INSERT INTO users ( users.first_name, users.last_name, users.mobile_no, users.email, users.password, users.reg_date)         VALUES (? ,? ,? ,? ,? ,NOW() )";    mysqli_stmt_prepare($q, $query);    mysqli_stmt_bind_param($q, "sssss", $first_name, $last_name, $mobile_number, $email, $password);    mysqli_stmt_execute($q);    if (mysqli_stmt_affected_rows($q) == 1) {        echo "data inserted <br>";        foreach ($_POST as $key => $val) {            echo "$key - - - > $val <br>";        }    }} else {    echo "email is already registered";}每当我在出现警告后运行这段代码时Warning: mysqli_stmt_bind_param(): invalid object or resource mysqli_stmt in /storage/emulated/0/htdocs/registration_process.php on line 66Warning: mysqli_stmt_execute(): invalid object or resource mysqli_stmt in /storage/emulated/0/htdocs/registration_process.php on line 67Warning: mysqli_stmt_get_result(): invalid object or resource mysqli_stmt in /storage/emulated/0/htdocs/registration_process.php on line 68Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in /storage/emulated/0/htdocs/registration_process.php on line 70 
查看完整描述

1 回答

?
www说

TA贡献1775条经验 获得超8个赞

这里的问题很奇特。这听起来无关紧要,但此错误消息是不可靠语法变体的结果。

与对象语法相比,过程性 mysqli 语法不仅过于冗长,而且具有欺骗性,不是在真正发生时引发错误,而是在已经为时已晚时引发错误,更不用说此错误消息的神秘性质。

您的查询存在一些问题,您需要按照此答案中的说明从 MySQL获取真正的错误消息,但为了实现它,您必须更改语法。

外卖:解决你的问题

  1. conn.php如本文所示重写您的内容以设置正确的连接设置

  2. 将程序 mysqli 重写为对象语法,例如

    $query = "SELECT userid FROM users WHERE email = ?";
    $stmt = $dbconn->prepare($query);$stmt->bind_param("s", $email);
    $stmt->execute();
    $result = $stmt->get_result();
  3. 得到真正的错误信息

  4. 如果错误已经很清楚,那么只需修复它,否则谷歌以获得更好的解释

之后你就可以解决问题了。


查看完整回答
反对 回复 2023-05-12
  • 1 回答
  • 0 关注
  • 132 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信