Я собираюсь обновить данные профиля пользователя (имя, пароль, 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:
Есть две вещи, которые я заметил
Есть точка с запятой ;
и фигурные скобки ()
в вашем SQL, которые не должны быть частью этого. И это должно быть
"UPDATE 'mydb.User' SET 'name' = ?, 'password'= ? , 'contact_no'= ?,'email' = ? WHERE 'user_id' = ?"
Поскольку, userid
и contact_no
являются integer
. Тогда это должно быть "ssisi"
вместо "sssss"
Кроме того, я бы предложил использовать User
вместо mydb.User
.
Предложение set
update
statement не имеет круглых скобок вокруг него. Просто удалите их, и все будет в порядке:
$stmt = $this->con->prepare("UPDATE 'mydb.User' SET 'name' = ?, 'password'= ? , 'contact_no'= ?,'email' = ? WHERE 'user_id' = ? ;");
# Parentheses removed ------------------------------^------------------------------------------------------^