trevoga_su
@trevoga_su

Пишу класс под Mysqli, нужна критика и предложения?

Привет всем.
Имеется прекрасно работающая обертка над mysqli.
Суть очень простая - это обертки над mysqli и mysqli_result, позволяющие максимально удобно работать с SQL.
Это НЕ ActiveRecord, НЕ ORM, НЕ SqlBuilder. Это лишь обертка над SQL, позволяющая избежать тонны однотипного кода при использовании подготовленных выражений. Точнее, идёт эмуляция оных.
Документация пока здесь - www.phpinfo.su/articles/additionally/klass_dlja_be...

Один из примеров:
$db->query('INSERT INTO `users` VALUES (?n, "?s", "?i", "?s")', null, 'Иван', '25', 'г. Клин, ЗАО "Рога и копыта"');

$user = array('name' => 'Василий', 'age' => '30', 'adress' => "Москва, ОАО 'М.Видео'");
$db->query('INSERT INTO `users` SET ?As', $user);

$user = array('id' => null, 'name' => 'Пётр', 'age' => '19', 'adress' => 'Москва, ул. Красносельская, 40\12');
$db->query('INSERT INTO `users` SET ?A[?n, "?s", "?s", "?s"]', $user);

$user = array('id' => null, 'name' => 'Анна_Каренина', 'age' => '23', 'adress' => 'Москва, ул. Радиальная, 12');
$db->query('INSERT INTO `users` VALUES (?a[?n, "?s", "?i", "?s"])', $user);


Нужна адекватная критика и предложения, что упущено, что нужно сделать.
  • Вопрос задан
  • 353 просмотра
Пригласить эксперта
Ответы на вопрос 2
Writerim
@Writerim
Заполнить позже...
Вряд ли вам кто-то чем то поможет с этим. Вы сейчас сделали нечто подобное : купили лего и подпили их так, что собрать их можно только в определенном порядке и ваш ребенок начнет рано материться. Это как бы все тот же лего, но из него собирать сможете только вы. ORM не дураки придумали же. Оно позволяет из этого самого лего вам делать от табуретки до космического корабля. Просто задайте себе вопрос
Как я буду поддерживать проект если мне придется изменить название sql поля или удалить его.
Это как бы ваше решение, но вряд ли кто-то повторит ваш подвиг.
Ответ написан
Комментировать
@pihel
Sql, Oracle, pl/sql, BI, ETL, php, olap
Мне кажется единственно нормальным вариантом обертки - этот
$db->query('INSERT INTO `users` VALUES (?n, "?s", "?i", "?s")', null, 'Иван', '25', 'г. Клин, ЗАО "Рога и копыта"');

Все остальные варианты извращение над SQL, который итоговый не видно.
+ Если это настоящий prepared statement, то кавычки вокруг параметров не нужно:
$db->query('INSERT INTO `users` VALUES (?n, ?s)', 1, 'Иван');
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы