2013-09-20 6 views
1

Я хочу статус статуса шоу, jumlah, harga и total.mysql отображение данных из нескольких таблиц

это моя структура таблицы

порядка{id_order, id_user, status}

order_detail{id_order,jumlah, harga, total}

это моя функция запроса:

function shopstat($user_id) { 
    return $this->db->query("SELECT * from order_detail left join order on order_detail.id_order=order.id_order where order.id_user=$user_id"); 
} 

, но у меня есть синтаксис об ошибке:

Номер ошибки: 1064

У вас возникла ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса использовать вблизи «порядка на order_detail.id_order = order.id_order где order.id_user = 16» в строке 1

+0

Вот стандартный комментарий: вы оставляете себя открытым для SQL-инъекции. Вероятно, вы хотите использовать 'mysqli'' prepare() 'функцию. Кроме того, для чего-то сложного вы можете попробовать использовать хранимую процедуру. – PlausibleSarge

+0

Если валидация входных данных перед запросом, хранимая процедура не требуется. –

ответ

6

ORDER является зарезервированным словом, для ORDER BY. Вы должны обернуть его в backticks. Я также использовал псевдонимы o и od, поэтому вам не нужно делать еще больше обратных ссылок. Больше символов = больше вероятности для опечатки, но эта часть зависит от вас.

$query = "SELECT * from order_detail od 
      LEFT JOIN `order` o ON od.id_order=o.id_order 
      WHERE o.id_user=$user_id"; 

return $this->db->query($query); 

Полный список зарезервированных слов здесь:

http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html (от Фуада)

0

«Заказ» - это зарезервированное слово, которое вы не можете использовать в качестве идентификатора. Вместо этого используйте что-то другое.

Смежные вопросы