Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: не отрабатываються инсерты в MSSQL из php
Форумы портала PHP.SU » » Работа с СУБД » не отрабатываються инсерты в MSSQL из php

Страниц (1): [1]
 

1. Scorpion15 - 29 Октября, 2015 - 13:34:59 - перейти к сообщению
Добрый день!
Подключился к mssql через freetds(у меня Ubuntu 14.10), в конфиги mssql указал кодировку utf8 для того что бы нормально русские буквы на странице выводились.
Select работает прекрасно. А вот с insert проблемы, не записываются данные в MSSQL 2012, в profile транзакции появляются, last insertid выдает новый id, но данные в базу не заносятся. Подключаюсь через pdo. Что за чудеса могут быть, и как это исправить?
2. Dastor - 29 Октября, 2015 - 22:02:24 - перейти к сообщению
Может Вы не делаете коммит?
3. Scorpion15 - 30 Октября, 2015 - 06:28:31 - перейти к сообщению
Я пробовал разными способами и :
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.                 $statement_handler=$database_handler->prepare($sqlQuery);
  3.                 $statement_handler->execute();
  4.                 return $database_handler->lastInsertId();
  5.  

И вот так:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $database_handler->beginTransaction();
  3. $statement_handler=$database_handler->prepare($sqlQuery);
  4. $statement_handler->execute();
  5. $database_handler->commit();
  6. return $database_handler->lastInsertId();
  7.  

Все равно не работает. Даже если просто вызываешь встроенную процедуру. Может надо как то по другому это все вызывать?
4. Faraon-san - 30 Октября, 2015 - 09:26:35 - перейти к сообщению
посмотри логи в самой базе, какой запрос к нему приходит.
5. Scorpion15 - 30 Октября, 2015 - 10:51:22 - перейти к сообщению
Смотрел profile, там нормальные запросы приходят
6. Dastor - 30 Октября, 2015 - 11:30:42 - перейти к сообщению
Может быть ошибка в запросе? PDO по умолчанию не выкидывает эксепшн.
Что возвращает $statement_handler->errorInfo(); после $statement_handler->execute()

А lastInsertId может возвращает id других успешных инсертов.
7. Faraon-san - 30 Октября, 2015 - 11:34:06 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $database_handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

вот так будет выбрасывать
8. Panoptik - 30 Октября, 2015 - 11:38:25 - перейти к сообщению
а еще длиннее переменные нельзя называть
$database_mssql_2012_server_i_am_very_cool_programmer_handler = new PDO()

это ппц...
называйте переменные кратко и понятно: $db $stmt

второе: показывайте запрос и больше информации связанной с запросом. а то тема - очередное гадание на кофейной гуще
9. Scorpion15 - 30 Октября, 2015 - 12:03:30 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.     $database_handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  3.  

Этот параметр установлен. Ошибок нет. Запрос самый простой для теста специально беру:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. INSERT INTO TABLE (FULLNAME) VALUES(NULL)
  3.  

Какую информацию еще надо показать?
10. Panoptik - 30 Октября, 2015 - 13:15:31 - перейти к сообщению
а этот запрос корректно обрабатывается в каком-нибудь другом менеджере БД?
(Добавление)
еще как вариант проверьте точно ли к той базе происходит подключение, а то мало ли. случаи разные бывают. возможно у вас несколько БД, пишите в одну, а результат хотите посмотреть в другой
11. Scorpion15 - 30 Октября, 2015 - 14:33:17 - перейти к сообщению
Этот запрос я выполняю в managment studio, все хорошо. Подключаюсь точно туда куда надо, т.к. select и транзакции вижу.

 

Powered by ExBB FM 1.0 RC1