我遇到MySQL Update的问题,我不知道如何解决它

时间:2018-06-13 17:21:27

标签: php mysql

我是MySQL新手。这是我的代码块:

public function updateTable($obj, $column_names, $table_name, $bannerid) {

    $c = (array) $obj;
    $id = $bannerid;
    $keys = array_keys($c);
    $columns = '';
    $values = '';
    foreach($column_names as $desired_key){ // Check the obj received. If blank insert blank into the array.
       if(!in_array($desired_key, $keys)) {
            $$desired_key = '';
        }else{
            $$desired_key = $c[$desired_key];
        }
        $columns = $columns.$desired_key.',';
        $values = $values."'".$$desired_key."',";
    }
    //$query = "INSERT INTO ".$table_name."(".trim($columns,',').") VALUES(".trim($values,',').")";
    //mysql_query("UPDATE blogEntry SET content = '$udcontent', title = '$udtitle' WHERE id = $id");
    $query = "UPDATE ".$table_name." SET "."(".trim($columns,',').") = VALUES(".trim($values,',').")" ."WHERE id = '$id'" ;
    $r = $this->conn->query($query) or die($this->conn->error.__LINE__);

    if ($r) {
        $new_row_id_update = $this->conn->insert_id;
        return $new_row_id_update;
        } else {
        return NULL;
    }
} 

这是我得到的错误:

  

您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在'(image_url,intro)= VALUES('800bf5f59a1d13c8.jpg',',sd,cfcjaklewfh ewiuofejkfdh'附近的第1100行使用正确的语法

1 个答案:

答案 0 :(得分:0)

sgeddes对于查询结构是正确的。试试这个吧。你应该回显$ query以确保它正确构建。

public function updateTable($obj, $column_names, $table_name, $bannerid) {

    $c = (array) $obj;
    $id = $bannerid;
    $keys = array_keys($c);
   $subquery='';
   foreach($column_names as $desired_key){
       // Check the obj received. If blank insert blank into the array.
   if(!in_array($desired_key, $keys)) {
        $$desired_key = '';
    }else{
        $$desired_key = $c[$desired_key];
    }
    $subquery.=$desired_key."='".$$desired_key ."',";
}
//remove trailing common
$query="UPDATE ".$table_name." SET " substr(subquery,0,-1)." WHERE id = '$id'" ;
$r = $this->conn->query($query) or die($this->conn->error.__LINE__);

   if ($r) {
    $new_row_id_update = $this->conn->insert_id;
    return $new_row_id_update;
    } else {
    return NULL;
   }

}