Правильный SQL-запрос в CodeIgniter выдает ошибку

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