Intereting Posts
кнопка «Назад назад» не обновляет страницу Удалите разрывы строк и добавьте теги BR в PHP Функция успеха Ajax, возвращающая Неустранимая ошибка: вызов неопределенной функции mcrypt_encrypt () sonataNotificationBundle, электронные письма, которые хранятся в базе данных, но потребитель swiftmailer не запускается, и никакие электронные письма не отправляются Как бороться со странным округлением плавающих в PHP Typo3 V6: Как создать контейнер элементов контента? (без телевизора) Проблемы CloudSQL PDO (unix_socket) в Google App Engine Обновление базы данных обновлений из Flash Codeigniter: mp4 видео не будет загружаться, без ошибок Regex для пароля PHP Аутентификация Active Directory / ISA с php Метод (например, через скрипт bash), чтобы превратить индексы php-массива в настоящее время с использованием констант в индексы массивов с использованием одинарных кавычек? Проблемы с mod_rewrite и mod_userdir phpbb 3.1 передача переменной между 2 страницами

PHP: имя oci_bind_by_name и timestamp приводит к «ORA-01461: может привязывать значение LONG только для вставки в столбцы LONG»

У меня есть база данных Oracle и вам нужно вставить строку с датой в формате YYYY-MM-DD HH: MM: SS в поле метки времени Oracle. Для этого я написал этот код:

$date = '2013-01-01 10:10:10'; $sql = oci_parse($c,"INSERT INTO MY_TABLE (ID, SEND_DATE) VALUES (MY_SEQ.nextval, TO_TIMESTAMP(:send_date, 'YYYY-MM-DD HH24:MI:SS'))"); oci_bind_by_name($sql, ':send_date', $date, null, SQLT_CHR); oci_execute($sql); 

Таблица выглядит так:

 CREATE TABLE "MY_TABLE" ( "ID" NUMBER NOT NULL ENABLE, "SEND_DATE" TIMESTAMP (0) NOT NULL ENABLE ); 

Если я выполню запрос выше, я получаю эту ошибку:

ORA-01461: может связывать значение LONG только для вставки в столбцы LONG

Уже есть много вопросов относительно ORA-01461 о переполнении стека, но я не смог найти решение этой проблемы. Я действительно не могу понять, где находится это созвездие, в которое входит LONG.

Solutions Collecting From Web of "PHP: имя oci_bind_by_name и timestamp приводит к «ORA-01461: может привязывать значение LONG только для вставки в столбцы LONG»"

Из ( http://www.php.net/manual/en/function.oci-bind-by-name.php#92334 ):

Иногда вы получаете сообщение об ошибке «ORA-01461: может привязывать значение LONG только для вставки в столбцы LONG». Эта ошибка сильно вводит в заблуждение, особенно если у вас нет LONG-столбцов или значений LONG.

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

Чтобы избежать этой ошибки, убедитесь, что вы указываете длины при привязке varchars, например

 <?php oci_bind_by_name($stmt,':string',$string, 256); ?> 

И для чисел используйте длину по умолчанию (-1), но скажите оракуле его целое число, например

 <?php oci_bind_by_name($stmt,':num',$num, -1, SQLT_INT); ?>