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

Код: 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
PHP - PDO - MSSQL: Не работает простой инсерт
    #38728028
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор$tr = $this->ms_con->prepare('INSERT INTO www_test(c1) VALUES (\'eee-'.rand(1,100000).'\')');

пользуйся параметрами.
...
Рейтинг: 0 / 0
PHP - PDO - MSSQL: Не работает простой инсерт
    #38728036
Postolachi Serghei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
3 сообщений из 3, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP - PDO - MSSQL: Не работает простой инсерт
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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