-
pippuccio76
Senior Member
-
Posts: 462
Threads: 198
Joined: Jun 2017
Reputation:
2
HI , this is my code :
Code: $this->db->from('eventi_partecipanti_accompagnatori');
$this->db->join('accompagnatori_club', 'accompagnatori_club.id=eventi_partecipanti_accompagnatori.id_accompagnatori_club', 'left');
$this->db->join('user', 'accompagnatori_club.id_user=user.id', 'left');
$this->db->where('eventi_partecipanti_accompagnatori.id_eventi', $id_eventi);
$this->db->where('user.id', $id_user);
if($this->db->delete('eventi_partecipanti_accompagnatori')){
return TRUE;
}else{
return FALSE;
}
But i have this error :
Code: Deletes are not allowed unless they contain a "where" or "like" clause.
How can i solve it ?
-
neuron
Member
-
Posts: 198
Threads: 39
Joined: Nov 2016
Reputation:
8
I see it is hard coded in the system QB, you can either implement your custom QB and override delete method or implement your own method,
or you can add dummy where $this->db->where('1=1', NULL, FALSE);
Do little research on how to extend query builder, there are must be examples. Because it is also requires to extend the Loader library
This rule is implemented for safety reason, you may unintentionally delete all the records in the table which may cause more headache for you.
-
neuron
Member
-
Posts: 198
Threads: 39
Joined: Nov 2016
Reputation:
8
03-13-2020, 06:53 AM
(This post was last modified: 03-13-2020, 07:01 AM by neuron.)
I am sorry , I don't why I did not have look to your code, before answering.
I never did delete with using QB, so I am not sure your code produces the right SQL code.
try running
Code: echo $this->db->get_compiled_delete('eventi_partecipanti_accompagnatori');
and check the SQL code it generates
(03-13-2020, 06:53 AM)neuron Wrote: I am sorry , I don't why I did not have look to your code, before answering.
I never did delete with using QB, so I am not sure your code produces the right SQL code.
try running
Code: echo $this->db->get_compiled_delete('eventi_partecipanti_accompagnatori');
and check the SQL code it generates
Also I see you can remove 'left' arguments from you joins, as where clause will eventually filter those NULL fields.
-
pippuccio76
Senior Member
-
Posts: 462
Threads: 198
Joined: Jun 2017
Reputation:
2
(03-13-2020, 06:53 AM)neuron Wrote: I am sorry , I don't why I did not have look to your code, before answering.
I never did delete with using QB, so I am not sure your code produces the right SQL code.
try running
Code: echo $this->db->get_compiled_delete('eventi_partecipanti_accompagnatori');
and check the SQL code it generates
(03-13-2020, 06:53 AM)neuron Wrote: I am sorry , I don't why I did not have look to your code, before answering.
I never did delete with using QB, so I am not sure your code produces the right SQL code.
try running
Code: echo $this->db->get_compiled_delete('eventi_partecipanti_accompagnatori');
and check the SQL code it generates
Also I see you can remove 'left' arguments from you joins, as where clause will eventually filter those NULL fields.
I insert the query without QB and the query it'ok run on adminer ( similar to phpmyadmin)
Code: $sql = "DELETE eventi_partecipanti_accompagnatori
from eventi_partecipanti_accompagnatori
join accompagnatori_club on accompagnatori_club.id=eventi_partecipanti_accompagnatori.id_accompagnatori_club
JOIN user on accompagnatori_club.id_user=user.id
WHERE user.id= $id_user
AND eventi_partecipanti_accompagnatori.id_eventi = $id_eventi";
$res=$this->db->query($sql);
if($res){
return TRUE;
}else{
return FALSE;
}
but same problems...
-
pippuccio76
Senior Member
-
Posts: 462
Threads: 198
Joined: Jun 2017
Reputation:
2
03-18-2020, 11:12 AM
(This post was last modified: 03-18-2020, 11:17 AM by pippuccio76.)
(03-13-2020, 10:14 AM)pippuccio76 Wrote: (03-13-2020, 06:53 AM)neuron Wrote: I am sorry , I don't why I did not have look to your code, before answering.
I never did delete with using QB, so I am not sure your code produces the right SQL code.
try running
Code: echo $this->db->get_compiled_delete('eventi_partecipanti_accompagnatori');
and check the SQL code it generates
(03-13-2020, 06:53 AM)neuron Wrote: I am sorry , I don't why I did not have look to your code, before answering.
I never did delete with using QB, so I am not sure your code produces the right SQL code.
try running
Code: echo $this->db->get_compiled_delete('eventi_partecipanti_accompagnatori');
and check the SQL code it generates
Also I see you can remove 'left' arguments from you joins, as where clause will eventually filter those NULL fields.
I insert the query without QB and the query it'ok run on adminer ( similar to phpmyadmin)
Code: $sql = "DELETE eventi_partecipanti_accompagnatori
from eventi_partecipanti_accompagnatori
join accompagnatori_club on accompagnatori_club.id=eventi_partecipanti_accompagnatori.id_accompagnatori_club
JOIN user on accompagnatori_club.id_user=user.id
WHERE user.id= $id_user
AND eventi_partecipanti_accompagnatori.id_eventi = $id_eventi";
$res=$this->db->query($sql);
if($res){
return TRUE;
}else{
return FALSE;
}
but same problems...
Sorry the file isn't uploaded , the query work fine.
|