Slim Php Mysql Put метод пустое значение, хотите обновить 4 столбца, но обновлен только 1 столбец, но результат указывает на успех
Моя цель - обновить 4 столбца в моей таблице за один запрос. Но в итоге обновляется только 1 столбец, а остальные 3 - нет.
Мой запрос такой
$stmt = $this->conn->prepare("UPDATE users_info SET profile_image_path = ?,user_bio = ? ,gender = ?,date_of_birth = ? WHERE user_id = ?");
$stmt->bind_param("sssii",$profile_image_upload_url,$user_bio,$gender,$date_of_birth,$user_id);
$result = $stmt->execute();
$stmt->close();
return $result;
Вот мой код для вызова запроса
//update to database
global $user_id;
$db = new DBhandler();
$update_result = $db->callForQueryFunction($user_id,$user_bio,$date_of_birth,$gender,$profile_image_string);
$response = array();
if($update_result){
$response['error'] = false;
$response['message'] ="sucess";
}else{
$response['error'] = true;
$response['message'] ="fail";
}
После запуска в расширенном клиенте отдыха, с помощью следующего запроса
user_bio= хихи & пол = F &profile_image_string=somestringhere&date_of_birth=2015-08-16
После выполнения запроса результат всегда будет "успешным", но только в таблице Mysql profile_image_path
колонка обновлена, остальные 3 колонки user_bio
, date_of_birth
а также gender
все не обновляются.
Я работаю часами, так и не поняв, что не так с кодом или структурой моей базы данных.
Обновление: я пробовал с bind_param
за s
с $date_of_birth
, но все равно не повезло с этим
$stmt->bind_param("ssssi",$profile_image_upload_url,$user_bio,$gender,$date_of_birth,$user_id);
ОБНОВЛЕНИЕ Я на самом деле использую этот пример из Androidhive, пример кода, как показано ниже
/**
* Updating existing task
* method PUT
* params task, status
* url - /tasks/:id
*/
$app->put('/tasks/:id', 'authenticate', function($task_id) use($app) {
// check for required params
verifyRequiredParams(array('task', 'status'));
global $user_id;
$task = $app->request->put('task');
$status = $app->request->put('status');
Но я использую тот же метод, что и ниже, чтобы получить значение, но после var_dump() все значение NULL
. Вот мой код
$app->put('/updateuserdetails','authenticate',function ()use ($app){
$user_bio = $app->request()->put('userbio');
$gender =$app->request()->put('gender');
$date_of_birth = $app->request()->put('dob');
$profile_image_string = $app->request()->put('profilestring');
Я тоже так пробую. Ценность user_bio
, gender
, date_of_birth
все еще null
,
$app->post('/updateuserdetails','authenticate',function ()use ($app){
$user_bio = $app->request()->post('userbio');
$gender =$app->request()->post('gender');
$date_of_birth = $app->request()->post('dob');
$profile_image_string = $app->request()->post('profilestring');
Я просто не могу понять, что здесь происходит не так
Обновление После того, как я проверил его в Postman, отправив данные с кодом x-www-form-urlencoded, он вышел с этой ошибкой, которую я не могу найти, какое-либо решение
1 ответ
Попробуйте следующее:
$stmt = $this->conn->prepare("UPDATE users_info SET profile_image_path = :image, user_bio = :bio, gender = :gender, date_of_birth = :dob WHERE user_id = :id");
$stmt->bindParam(":image", $profile_image_upload_url, PDO::PARAM_STR);
$stmt->bindParam(":bio", $user_bio, PDO::PARAM_STR);
$stmt->bindParam(":gender", $gender, PDO::PARAM_STR);
$stmt->bindParam(":dob", $date_of_birth, PDO::PARAM_STR);
$stmt->bindParam(":id", $user_id, PDO::PARAM_INT);
$result = $stmt->execute();
$stmt->close();
return $result;