简体   繁体   中英

Update and Join query together in codeigniter?

Updating data while join two tables but it gives an error in where condition can i use join and update together in a query?

here is my code

public function update_model($id,array $data)
{

//$textArea=$data['textdata'];
$this->db->join('user_data', 'user.id = user_data.id');
$this->db>where('user_data.id',$id);
$this->db->update('user_data',$data);

$query=$this->db->get();
return $query->result();
}

I got Error like below in my mysql

Fatal error: Uncaught Error: Call to undefined function where() in C:\xampp\htdocs\P_Display\application\models\Pmodel.php:103 Stack trace: #0 C:\xampp\htdocs\P_Display\application\controllers\user.php(124): Pmodel->update_model('1', Array) #1 C:\xampp\htdocs\P_Display\system\core\CodeIgniter.php(360): User->updateSave('1') #2 C:\xampp\htdocs\P_Display\index.php(202): require_once('C:\xampp\htdocs...') #3 {main} thrown in C:\xampp\htdocs\P_Display\application\models\Pmodel.php on line 103

the where clause is giving me an error and is it correct to use this query?

Correct it as

$this->db>where('user_data.id',$id);//see here missing arrow

TO

$this->db->where('user_data.id',$id);

UPDATE

Update table like this..

$sql = "UPDATE user_data AS ud JOIN user AS u ON ud.id = u.id SET ud.col1 = val1,ud.col2 = val2 WHERE ud.id = $id";
$this->db->query($sql);

OR

$this->db->join('user_data', 'user.id = user_data.id');
$this->db->set($data);
$this->db->where('user_data.id',$id);
$this->db->update('user_data');

Thanks @HekMet for your reply

now i got the code but in a different way lok at it and let me know if you found some problem with it..

 public function update_model($id,array $data)
{
$uname=$data['uname'];
$email=$data['email'];
$password=$data['password'];
$address=$data['address'];
$mobilenumber=$data['Mobilenumber'];
$job=$data['Job'];

$query=
$this->db->set('user_data.email',$email);
$this->db->set('user.password',$password);
$this->db->set('user_data.mobilenumber',$mobilenumber);
$this->db->set('user_data.job',$job);
$this->db->set('user.uname',$uname);

$this->db->where('user_data.id',$id);
$this->db->where('user.id',$id);
$this->db->update('user_data JOIN user ON user_data.id= user.id');


return $query;


}

since it was giving error that my variable are ambigious i need to just set their values separatly.

$this->db->join() is not included in $this->db->update() that is why it came out with an error in query.

If you want to use the join() in the update, you have to modify it.

I had a similar problem and my way to solve it was to use $this->db->query() because when checking the log file of my database the sql that is generated confuses the aliases of the tables when I used the command $this->db->update().

$sql='UPDATE user_data, user SET uname="' .$uname. '" ,email="' .$email. '" WHERE user_data.id="'.$id.'" AND user.id = user_data.id';
$this->db->query($sql);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM