silversurfer5150 — 2012-03-20T07:43:15-04:00 — #1
I have a problem where no matter what value I pass into my php function below, the same row keeps being returned and its not the row I requested. Has anyone seen anything like this before because I am very confused?
Its such simple MYSQL thats why I don't understand it.
public function getSend($order_id)
$query = $this->dbs->query("SELECT order_id FROM SEND` WHERE order_id ='" . (int)$order_id . "'");
If I pass in 173 , my output is 173 db: 171 it just keeps returning 171 no matter what i put in there
r937 — 2012-03-20T08:05:40-04:00 — #2
why would you return order_id if you pass in the order_id value that you want returned?
i guess i don't understand what you're trying to do
silversurfer5150 — 2012-03-20T08:13:05-04:00 — #3
Thats my test code to ensure that what I'm passing in is referring to the same row that I'm getting out the actual code is to return some different data but for now I just need to make sure I have the right row returning.
r937 — 2012-03-20T08:14:55-04:00 — #4
you have a dangling backtick there, so that SELECT statement will die with a syntax error
did you test it outside of php yet?
silversurfer5150 — 2012-03-20T08:16:38-04:00 — #5
I have even tried SELECT order_id FROM SEND` WHERE order_id =173;
The query works fine in phpMyadmin but on my site it returns 171
silversurfer5150 — 2012-03-20T08:18:46-04:00 — #6
Hey that's it!
It was the backtick but that's just odd because I didn't put it there, I am using opencart you see, I was just copying their syntax, I wouldn't have used it myself either
silversurfer5150 — 2012-03-20T08:20:12-04:00 — #7
Here's the line that i copied from their code:
$query = $this->db->query("SELECT * FROM
" . DB_PREFIX . "customer WHERE customer_id = '" . (int)$customer_id . "'");
backtick is there, weird huh?
r937 — 2012-03-20T08:22:59-04:00 — #8
not weird at all -- their line has two backticks, and you've managed to lose one of them
silversurfer5150 — 2012-03-20T08:24:55-04:00 — #9
Thanks for your hep btw, What is the backtick for?
r937 — 2012-03-20T08:57:40-04:00 — #10
the backtick is mysql's mechanism to delimit problematic table/column names -- those which either contain special characters (like a space) or are themselves a reserved word (like ORDER)
SEND does not appear to be a reserved word (although it might easily be, right?) so you don't really need the backticks
silversurfer5150 — 2012-03-20T09:22:11-04:00 — #11
Ok I see, thanks very much