gpt4 book ai didi

php - Slim Php Mysql Put方法空值,想更新4列,但只更新了1列,但结果显示成功

转载 作者:行者123 更新时间:2023-11-29 19:19:55 25 4
gpt4 key购买 nike

我的目标是在单个查询中更新表中的 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=hihi&gender=f&profile_image_string=somestringhere&date_of_birth=2015-08-16

运行查询后,结果始终是“成功”,但在Mysql表中只有profile_image_path列被更新,其余3列user_biodate_of_birth 性别 均未更新。

这是我的数据库结构 database structure

我工作了几个小时仍然没有弄清楚代码或我的数据库结构出了什么问题。

更新:我尝试使用 bind_param for 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_biogenderdate_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 发送数据进行测试后,出现此错误,我无法得到任何解决方案

slim error

最佳答案

尝试以下操作:

$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;

关于php - Slim Php Mysql Put方法空值,想更新4列,但只更新了1列,但结果显示成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42506621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com