SQL-запрос содержит ошибки в моей структуре, но хорошо в MySQL Workbench

Это странно, так как мой запрос выполняется и возвращает правильный результат в mysqlworkbench, однако в моем приложении я получаю

У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с ') в качестве категории ИЗ продуктов p' в строке 1

Это в codeignitor с использованием datamapper.

$query="

SELECT CONCAT_WS('~', c3.name, c2.name, c1.name) as category 
FROM products p 
LEFT JOIN metadata m ON m.parent_id = p.id 
LEFT JOIN category0_table c0 ON c0.id = m.value 
LEFT JOIN category1_table c1 ON c1.id = c0.parent_ID 
LEFT JOIN category2_table c2 ON c2.id = c1.parent_ID 
LEFT JOIN category3_table c3 ON c3.id = c2.parent_ID 
WHERE p.id =5 
AND m.key = 'my_category'";

$model = new Product_model();
$results = $model->query($query);
return $results;

Я не могу думать, что не так, я пытался вывести оператор concat.

1 ответ

Почему бы не использовать активную запись? Это позволяет вашему приложению иметь гибкость на любой платформе, использующей множество различных баз данных, включая (mysql, mssql, postgress, oracle). Просто лучше практиковаться в ИМО. Что если однажды вы захотите запустить свое приложение на сервере Windows? просто установите php в IIS, и все готово. Или что, если вы уже находитесь на сервере Microsoft, на котором работает sql-сервер с php в IIS, и ваш ИТ-отдел должен сократить расходы? Вы можете сказать: "Эй, я знаю, как мы можем сократить бюджет на тысячи и ничего не потерять, просто зайдите с открытым исходным кодом!!" а затем вы получаете повышение по службе и т. д. и т. д.

$this->db->select("CONCAT_WS('~',c3.name,c2.name,c1.name) as category")->
           from("products p")->
           join("metadata m','m.parent_id = p.id","left")->
           join("category0_table c0","c0.id=m.value","left")->
           join("category1_table c1","c1.id=c0.parent_ID","left")->
           join("category2_table c2","c2.id = c1.parent_ID","left")->
           join("category3_table c3","c3.id = c2.parent_ID","left")->
           where("p.id","5")
           where("m.key","my_category");

$query = $this->db->get();

if($query->num_rows() >= 1) {
    return $query->result();
}else {
    return FALSE;
}
Другие вопросы по тегам