Комментарии: Удобная обертка PDO https://intsystem.org/coding/delaem-pdo-udobnym/ Случаи из опыта разработки различных WEB проектов. Интересные факты, статьи, впечатления. Программирование и все о нем в сфере WEB. Sun, 26 Jun 2016 14:57:43 +0000 hourly 1 https://wordpress.org/?v=6.9.1 Автор: Дмитрий Амиров https://intsystem.org/coding/delaem-pdo-udobnym/#comment-24034 Sun, 26 Jun 2016 14:51:36 +0000 http://intsystem.org/?p=1392#comment-24034 В ответ на proger.

Скорее всего дело в том что мой класс автоматически включает strict mode. Это режим в котором mysql бросает ошибки на любые неправильные данные (вместо округления, обрезания и проч.). По дефолту этот режим в MySQL выключен, что не совсем правильно, и слишком расслабляет программистов, откуда в итоге возникают ошибки.

Видимо у вас не задано значение по умолчанию для какого-то из столбцов, либо же данные «AAA» для столбца «name_ru» некорректны. Класс не бросает ошибки потому что по дефолту это отключено и в самом оригинальном PDO.

В общем ваш комментарий наконец сподвигнул меня обновить репозиторий на гитхабе. Возьмите новый код класса оттуда. Там я вынес настройку включения strict mode, а также включил генерацию исключений по умолчанию (наверное это правильнее чем их замалчивать).

Так например, ваш код теперь должен будет выбросить ошибку с пояснением проблемы при его выполнении. Для отключения строгого режима можете сделать так:

$db = new PDOExtended('mysql:host=localhost;dbname=baza', 'root', '', array(
	PDOExtended::ATTR_STRICT_MODE => false,
));

Ваш код кстати можно немного сократить:

$db = new PDOExtended('mysql:host=localhost;dbname=baza', 'root', '');
$db->exec("INSERT INTO table1  (name_ru)  VALUES (:str)", array('str' => 'AAA'));
]]>
Автор: proger https://intsystem.org/coding/delaem-pdo-udobnym/#comment-24031 Sun, 26 Jun 2016 08:46:16 +0000 http://intsystem.org/?p=1392#comment-24031 странно как-то работает ваш класс…

не работает (и не генерит ошибок):

$db = new PDOExtended('mysql:host=localhost;dbname=baza', 'root', '');
$res = $db->prepare("INSERT INTO table1  (name_ru)  VALUES (:str) ");
$res->execute(Array('str' => 'AAA'));

работает :

$db = new PDO('mysql:host=localhost;dbname=baza', 'root', '');
$res = $db->prepare("INSERT INTO table1  (name_ru)  VALUES (:str) ");
$res->execute(Array('str' => 'AAA'));

OpenServer, PHP 5.5, MySQL 5.5

]]>
Автор: Виктор https://intsystem.org/coding/delaem-pdo-udobnym/#comment-22610 Tue, 17 Nov 2015 17:58:11 +0000 http://intsystem.org/?p=1392#comment-22610 В ответ на Дмитрий Амиров.

Ай в общем ну его нафиг, взял вашу реализацию :)

]]>
Автор: Дмитрий Амиров https://intsystem.org/coding/delaem-pdo-udobnym/#comment-22601 Mon, 16 Nov 2015 21:02:08 +0000 http://intsystem.org/?p=1392#comment-22601 В ответ на Виктор.

Понимаю, плох тот програмист который не любит писать свои велоспеды)

]]>
Автор: Виктор https://intsystem.org/coding/delaem-pdo-udobnym/#comment-22599 Mon, 16 Nov 2015 20:06:07 +0000 http://intsystem.org/?p=1392#comment-22599 В ответ на Дмитрий Амиров.

Ну не, свой велосипед сердцу милее

]]>
Автор: Дмитрий Амиров https://intsystem.org/coding/delaem-pdo-udobnym/#comment-22587 Sun, 15 Nov 2015 21:15:27 +0000 http://intsystem.org/?p=1392#comment-22587 В ответ на Виктор.

Так а почему идею? Берите реализацию)

]]>
Автор: Виктор https://intsystem.org/coding/delaem-pdo-udobnym/#comment-22584 Sun, 15 Nov 2015 19:58:36 +0000 http://intsystem.org/?p=1392#comment-22584 Да с цепочками вызовов намного удобнее, код лаконичнее получается. Спасибо за идею

]]>
Автор: Дмитрий Амиров https://intsystem.org/coding/delaem-pdo-udobnym/#comment-17538 Sat, 14 Mar 2015 10:43:32 +0000 http://intsystem.org/?p=1392#comment-17538 В ответ на Наталья.

Как то так, если вы об этом:

$pdo->query(‘INSERT … ‘);

]]>
Автор: Наталья https://intsystem.org/coding/delaem-pdo-udobnym/#comment-17532 Fri, 13 Mar 2015 22:25:32 +0000 http://intsystem.org/?p=1392#comment-17532 Не могу понять а как вставить запись?

]]>
Автор: Дмитрий Амиров https://intsystem.org/coding/delaem-pdo-udobnym/#comment-6076 Thu, 24 Oct 2013 18:56:03 +0000 http://intsystem.org/?p=1392#comment-6076 В ответ на mr.The.

И это правильно. Нужно делать так как удобно самому, а не слушать других и уж тем более не делать так только потому что это модно.

За примером далеко ходить не надо. Иной раз достаточно почитать комменты к статьям на хабре. С комментариями в духе — мол у вас тут реализованно намного менее абстрактно чем во всех остальных фреймворках. Так и хочется спросить в ответ — вы е**нулись? Зачем делать тридцать слоев абстракции, если ты уверен что сделанного достаточно? Нет же, все стараются захреначить архитектуру суперрасширяемого приложения. А самое смешное, что вся эта огромная вложенность абстракций в момент когда потребуется отрефакторить код оказывается бесполезна, так как при разрабтке трудно учесть все, и то что вам надо будет дописать, в 90% случаев не уложится в них.

Просто одно дело делать так потому что это самому удобно, а второе дело — использовать херову кучу абстракций — ради упрощения будущего рефакторинга. Второе я не одобряю. Да, я не спорю, нужно правильно проектировать архитектуру, но переизбытка быть не должно. Все должно быть в меру)

Это не в твой адрес. Это мне просто высказаться захотелось, накипело так сказать)

]]>