#php #sql-server #codeigniter #codeigniter-3
#php #sql-сервер #codeigniter #codeigniter-3
Вопрос:
Когда я запускаю запрос из CodeIgniter, я получаю эту ошибку.
A Database Error Occurred
Error Number: 42000/263
[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Must specify
table to select from.
SELECT *
Filename: D:/xampp/htdocs/4hifi/system/database/DB_driver.php
Что сбивает с толку, потому что точно такой же запрос, выполняемый непосредственно в SQL-Сервере, дает правильные результаты.
Я использую CodeIgniter 3.1.9, я уже пытался ввести переменную $username для запроса разными способами, все выдают одну и ту же ошибку.
Вот код:
$sql = "select date, g1.product_name, g2.order_amount, g1.price, g1.id, g1.order_id, g1.action from dbo.orders g1 inner join (select product_name, SUM( order_amount) as order_amount from dbo.orders where action=1 and confirmed!=1 group by product_name) g2 on g2.product_name = g1.product_name where g1.confirmed !=1 and g1.kontrahent = ? and action = 1";
$db2->query($sql, $username);
$result = $db2->get()->result_array();
return $result;
Ответ №1:
$db2->query($sql, $username);
Сама строка должна возвращать требуемый результат.Нет необходимости делать db->get()
в случае необработанных запросов.
Комментарии:
1. Да, я внес изменения в код в соответствии с вашим ответом и теперь работает, большое вам спасибо 😉 $query = $ db2-> query($ sql, $ username); $result = $query-> result_array();
Ответ №2:
почему вы делаете это в два этапа. Вы должны использовать что-то вроде этого
$sql = "select date, g1.product_name, g2.order_amount, g1.price, g1.id, g1.order_id, g1.action from dbo.orders g1 inner join (select product_name, SUM( order_amount) as order_amount from dbo.orders where action=1 and confirmed!=1 group by product_name) g2 on g2.product_name = g1.product_name where g1.confirmed !=1 and g1.kontrahent = ? and action = 1";
$result = $sql->result_array();
return $result;