Intereting Posts
Получить точки полигона mysql Различные параметры timezone_types в объекте DateTime Новый API-интерфейс с графическим API-интерфейсом – Приложение не отображается PHP, вложенные запросы MYSQL php & mysql – цикл через столбцы одной строки и передача значений в массив symfony2: пароль пользователя установлен на пустой после запуска этого метода Заполнять флажки в соответствии с количеством массивов Как получить символы Юникода для последовательностей: CTRL + B, CTRL + L, ALT + K и т. Д. Получили ли некоторые из них не все? Отправка электронной почты с PHP с помощью SMTP и электронной почты идет на спам. Какой будет самый простой способ отправить электронную почту во входящие? Создайте JSON-объект правильным способом композитор работает везде, кроме одного проекта Предотвратите PHPExcel для вычисления значений при записи в файл Использование PHP & curl для публикации html-формы, содержащей файл Как получить последний путь в URL-адресе? PHPMailer из отображается как Root User

соединения codeigniter и odbc

Я не понимаю, почему CodeIgniter обертывает мое имя таблицы в скобках. Когда я использую драйвер ODBC CodeIgniter для MS SQL, он показывает ошибки ниже, однако он отлично работает с использованием драйвера MySql. Как я могу остановить эту ошибку?

A Database Error Occurred Error Number: 37000 [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near ')'. SELECT * FROM (ci_sessions) WHERE session_id = '3ad914bb5f5728e8ac69ad1db8fc9841' AND user_agent = 'Mozilla/5.0 (Windows NT 6.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2' Filename: D:\wamp\www\IVR_Panel\system\database\DB_driver.php Line Number: 330 

Я также попытался выполнить тот же запрос в SQL Server 2005, который работает без скобок, но все же ошибки с ними. Я использую активную запись, поэтому я могу легко переключаться между ODBC и MySQL. Где я могу изменить CodeIgniter для удаления скобок?

На самом деле это ошибка в CodeIgniter. В драйвере ODBC (/system/database/drivers/odbc/odbc_driver.php) при выборе таблицы используется следующий метод:

 function _from_tables($tables) { if ( ! is_array($tables)) { $tables = array($tables); } return '('.implode(', ', $tables).')'; } 

Он пытается группировать несколько разделов таблицы вместе, чтобы обеспечить соблюдение приоритета оператора, это должно работать нормально, если вы используете более одной таблицы, однако с одной таблицей она все же пытается сгруппировать ее, что приводит к ошибке, которую вы получаете.

К сожалению, я не верю, что возможно расширить эти файлы драйверов, поэтому вам, возможно, придется отредактировать сам файл ядра. Обратите внимание на это, если вам понадобится обновить CodeIgniter в будущем, вам придется изменить метод на что-то вроде следующего:

 function _from_tables($tables) { if ( ! is_array($tables)) { return strstr($tables, ',') ? '('.$tables.')' : $tables; } else { return count($tables) > 1 ? '('.implode(', ', $tables).')' : end($tables); } }