Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP - PDO - MSSQL: Не работает простой инсерт / 3 сообщений из 3, страница 1 из 1
25.08.2014, 12:26
    #38728006
Postolachi Serghei
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP - PDO - MSSQL: Не работает простой инсерт
Добрый день.
С начало коды:
Соединения:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
class MSSQLConnection extends PDO
{	
	function __construct($conection)
	{	
		if ($conection)
		{
			try
			{
				$dsn      = "dblib:dbname={$conection->database};host={$conection->server}";
				$user     = $conection->user;
				$password = $conection->password;
				parent::__construct($dsn, $user, $password);
	
				$rez = $this->prepare (' 
											SET CONCAT_NULL_YIELDS_NULL ON 
											SET ANSI_WARNINGS ON 
											SET ANSI_PADDING ON 
											SET ANSI_DEFAULTS ON 
											SET AUTOCOMMIT OFF
										');
				$rez->execute();

				$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
			} catch (PDOException  $e)
			{
			}
		}
		else
		{
			throw new Exception("Invalid db Coneection settings for '{$conection}'!");
		}
	}
}



Запрос:

Код: php
1.
2.
3.
4.
// $this->ms_con => object class MSSQLConnection 
....
$tr = $this->ms_con->prepare('INSERT INTO www_test(c1) VALUES (\'eee-'.rand(1,100000).'\')');
$tr->execute();



Если проверять сразу - то запись есть в базе. А при втором запросе прорадает. Пробовал ещё эти варианты:

Код: php
1.
2.
3.
4.
$this->ms_con->beginTransaction();
$tr = $this->ms_con->prepare('INSERT INTO www_test(c1) VALUES (\'eee-'.rand(1,100000).'\')');
$tr->execute();
$this->ms_con->commit();



Код: php
1.
2.
3.
4.
5.
6.
$tr = $this->ms_con->prepare('BEGIN TRAN T1');
$tr->execute();
$tr = $this->ms_con->prepare('INSERT INTO www_test(c1) VALUES (\'eee-'.rand(1,100000).'\')');
$tr->execute();
$tr = $this->ms_con->prepare('COMMIT TRAN T1');
$tr->execute();



В чём может быть проблему?
Спосибо.
...
Рейтинг: 0 / 0
25.08.2014, 13:06
    #38728028
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP - PDO - MSSQL: Не работает простой инсерт
автор$tr = $this->ms_con->prepare('INSERT INTO www_test(c1) VALUES (\'eee-'.rand(1,100000).'\')');

пользуйся параметрами.
...
Рейтинг: 0 / 0
25.08.2014, 13:12
    #38728036
Postolachi Serghei
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP - PDO - MSSQL: Не работает простой инсерт
ScareCrowавтор$tr = $this->ms_con->prepare('INSERT INTO www_test(c1) VALUES (\'eee-'.rand(1,100000).'\')');

пользуйся параметрами.

Использовал. Тоже самое. Проблема где то в Коммите, но не могу узнать где. Да, с "mssql_*" работает, но хотелось использовать PDO.

Код: php
1.
2.
$tr = $this->ms_con->prepare('INSERT INTO www_test(c1) VALUES (:v1)');
$tr->execute(array(':v1' => 'eee-'.rand(1,100000)));
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP - PDO - MSSQL: Не работает простой инсерт / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]