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;
}