views:

288

answers:

3

Hi all, Let's say I have a query:

" SELECT * FROM table 
      WHERE donor_id = " .$this->session->userdata('id') ." 
      GROUP BY rating"

However, it appears that I get a mysql syntax error here, citing that $this->session->userdata('id') gives me '25' for example, instead of 25. Are there any workarounds here to prevent $this->session->userdata('id') from being quoted?

Thanks.

+1  A: 

Assuming you mean that it is returning you a string instead of an interger you could always try using settype or intval:

$var = '2';
settype($var, "integer");
$var = intval($var);

However, if you mean that the quotes are for some reason hard-coded in, you could do a string replace, if you are sure that the value will not contain quotes:

ech str_replace("'", "", "'2'"); // prints 2
Chacha102
+1  A: 

intval($this->session->userdata('id'))

Justin Ethier
+2  A: 

In CI, I do this all the time:

$id = intval($this->session->userdata('id'));
$sql = "  SELECT * ".
       "    FROM table ".
       "   WHERE donor_id = {$id} ". 
       "GROUP BY rating ";
//process $sql below

Creating query like this will make you easier to spot bug and prevent SQL injection. Use concatenation when you need to split query to multiple lines instead of make it a long multiple string is to prevent the actual query string got too long. Indent the SQL keyword is to make it easier spot logical and syntax bug.

Donny Kurnia