php - 如何解决执行update语句时bind_param()中的 fatal error

标签 php mysql prepared-statement bindparam

我将更新用户个人资料详细信息(姓名、密码、联系人号码、电子邮件)。 请帮我检查如何改进代码以便我能够成功更新。

这是 DbOperations.php updateUser 类:

public function updateUser($user_id, $name, $password,$contact_no,$email){
        $stmt = $this->con->prepare("UPDATE `mydb.User` SET `name` = ?, `password`= ? , `contact_no`= ?,`email` = ? WHERE  `user_id` = ? ;");

        $stmt->bind_param("ssisi", $name, $password, $contact_no, $email, $user_id);

        if($stmt->execute()){
                return 1;

        }else{
            return 2;
            }
    }       

这是 updateProfile.php

<?php
require_once'../includes/DbOperations.php';

    $response =array();
        if($_SERVER['REQUEST_METHOD']=='POST'){
            if(isset($_POST['user_id'])and
                isset($_POST['name'])and
                    isset($_POST['password'])and
                        isset($_POST['contact_no'])and
                        isset($_POST['email']))

                {//operate the data further
                    $db = new DbOperations();
                    $result=$db->updateUser(
                                        $_POST['user_id'],
                                        $_POST['name'],
                                        $_POST['password'],
                                        $_POST['contact_no'],
                                        $_POST['email']

                                        );
                    if($result == 1){
                                    $response['error']= false;
                                    $response['message'] = "updated successfully";


                    }elseif($result == 2){
                        $response['error']=true;
                        $response['message'] = "updated failed";
                        }
                    }       
            }else{
                $response['error']=true;
                $response['message'] = "empty fileds";

        }


    echo json_encode($response);

错误消息:

`<br />
<b>Fatal error</b>:  Call to a member function bind_param() on a non-object in
<b>C:\xampp\htdocs\Android\includes\DbOperations.php</b> on line
<b>49</b>
<br />`

第 49 行是:$stmt->bind_param("sssss", $name, $password, $contact_no, $email, $user_id);

我正在使用 API 开发人员进行 POST:

updateProfile-error

Table Structure

最佳答案

我注意到有两件事

  1. SQL 中不应该有分号 ;大括号 ()成为其中的一部分。而且应该是

    "UPDATE `mydb.User` SET `name` = ?, `password`= ? , `contact_no`= ?,`email` = ? WHERE  `user_id` = ?"
    
  2. 因为,useridcontact_nointeger。那么它应该是 "ssisi" 而不是 "sssss"

  3. 此外,我建议使用 User 而不是 mydb.User

关于php - 如何解决执行update语句时bind_param()中的 fatal error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48248301/

相关文章:

php - 数据表服务器处理 SELECT COUNT

PHP - 将对象打印到后端功能的控制台/日志

php - 如何在不重复参数的情况下将参数绑定(bind)到多个值

php - 在不使用插件的情况下向 WooCommerce 订单号添加后缀和前缀

php - 在 php 中的 Javascript 函数中获取单选按钮字段值

php - 绝对初学者的 ssl

Java 赋值不起作用

mysql - 如何在给出另一个约束的情况下选择最新的mysql组?

php - 未显示唯一编号

mysql - 参数化查询中的数据类型/长度