Slim Php Mysql Put方法空值,想要更新4列,但只更新1列但结果表明成功

时间:2017-02-28 10:46:45

标签: php mysql slim

我的目标是在一个查询中更新表格中的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年8月16日

运行查询后,结果总是"成功"但是在Mysql表中只更新profile_image_path列,其余3列user_biodate_of_birth并且gender都没有更新。

这是我的数据库结构 database structure

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

更新 我尝试使用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_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');

我无法弄清楚这里出了什么问题

更新 在我使用 x-www-form-urlencoded 发送数据后在Postman中进行测试后,它出现了这个错误,我无法得到任何解决方案

slim error

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

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