Как устранить фатальную ошибку в bind_param () при выполнении оператора update

0

Я собираюсь обновить данные профиля пользователя (имя, пароль, contact_no, email). Пожалуйста, помогите мне проверить, как я могу улучшить код, чтобы я мог успешно обновлять.

Вот класс 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:

Изображение 174551

Изображение 174551

Теги:
prepared-statement
bindparam

2 ответа

0
Лучший ответ

Есть две вещи, которые я заметил

  1. Есть точка с запятой ; и фигурные скобки () в вашем SQL, которые не должны быть частью этого. И это должно быть

    "UPDATE 'mydb.User' SET 'name' = ?, 'password'= ? , 'contact_no'= ?,'email' = ? WHERE  'user_id' = ?"
    
  2. Поскольку, userid и contact_no являются integer. Тогда это должно быть "ssisi" вместо "sssss"

  3. Кроме того, я бы предложил использовать User вместо mydb.User.

  • 0
    Спасибо за ответ. Что касается пункта 2, я изменяю его на «ssisi», так как контакт также int. Но это дает мне ту же ошибку.
  • 0
    @NRZDYZXLUTMD, пожалуйста, обратите внимание, это было мое предположение (из опубликованного скриншота), я не знаю структуру вашей таблицы. Итак, вы хотите сказать, что после применения пункта 1 вы получаете то же исключение?
Показать ещё 5 комментариев
0

Предложение set update statement не имеет круглых скобок вокруг него. Просто удалите их, и все будет в порядке:

$stmt = $this->con->prepare("UPDATE 'mydb.User' SET 'name' = ?, 'password'= ? , 'contact_no'= ?,'email' = ? WHERE  'user_id' = ? ;");
# Parentheses removed ------------------------------^------------------------------------------------------^

Ещё вопросы

Сообщество Overcoder
Наверх
Меню