Welcome Guest, Not a member yet? Register   Sign In
Deletes are not allowed unless they contain a "where" or "like" clause.
#1

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 ?
Reply
#2

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.
Reply
#3

(03-13-2020, 06:09 AM)neuron Wrote: 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.
But there are two where , join but there are...
Reply
#4

(This post was last modified: 03-13-2020, 07:01 AM by neuron.)

I am sorry Smile, 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 Smile, 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.
Reply
#5

(03-13-2020, 06:53 AM)neuron Wrote: I am sorry Smile, 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 Smile, 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...
Reply
#6

(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 Smile, 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 Smile, 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.
Reply




Theme © iAndrew 2016 - Forum software by © MyBB