ну, как минимум, имя базы.таблицыЗачем это? Когда может понадобиться вставлять имя базы.таблицы.колонки через плейсхолдер?
ну, как минимум, имя базы.таблицыЗачем это? Когда может понадобиться вставлять имя базы.таблицы.колонки через плейсхолдер?
Это не пользовательская информация, а доверенные конфигурационные данные. Зачем тут плейсхолдеры? Обычные строковые операции РНР еще никто не отменял.ну, как минимум, имя базы.таблицы
Корректно форматировать надо любые элементы запроса, а не только пользовательские данные.Это не пользовательская информация, а доверенные конфигурационные данные. Зачем тут плейсхолдеры? Обычные строковые операции РНР еще никто не отменял.
почему? Это идентификаторный плейсхолдер, а правила форматирования всех плейсхолдеров одинаковы.Согласен, не самая важная тема для спора. Хотя не могу не заметить, что использование плейсхолдера ?n для имени базы или таблицы не очень коррелирует с термином "корректно".
Эту фразу не понялГде-то надо остановиться и предоставить разработчику самому решать его собственные экзотические случаи, иначе класс преврашается в очередного мастодонта.
Виноват, это я с числовым плейсхолдером спутал.Какая проблема использовать его для базы данных?
Ну так немного там, немного здесь и получается куча. Твой класс, сам решай, где черту проводить. Я бы лично оставил упомянутые фичи вне реализации.Ну, то есть, с самой мыслью согласен на 100%, но не понял, как она относится к текущему обсуждению.
Тут спорно, т.к. с точки зрения ANSI SQL `sth`.`oth` и `sth.oth` — разные идентификаторы, но насколько знаю, так работает только в оракле.у меня, кстати, escapeName делает explode('.') и тд
Пункты 0 и 3 имеют много общего.Фанат
Надеюсь, ты не используешь "уже несколько месяцев" метод whiteList:
1. У array_search больше обязательных параметров, так как ща работать не будет
2. Будет notice при вызове whiteList('a', array('b' => 'b'))
3. Есть подозрение, что методам whiteList, filterArray не место в этом классе
Просто мне кажется, ты пытаешься объектный синтаксис скрестить с процедурным подходом, оттуда и головная боль. Нельзя остаться где-то между, по моему.я не готов к таким вещам.
я уже много раз сталкивался с тем, что "гладко было на бумаге, да забыли про овраги". И всё работает ровно до тех пор, пока #where строится по логике не сложнее, чем implode(' AND ',$w); а там - опять накручивать синтаксис, писать SQL на РНР.
Нафига в имени базы/таблицы точка? По такой логике я могу и ` в имени таблицы захотетьТут спорно, т.к. с точки зрения ANSI SQL `sth`.`oth` и `sth.oth` — разные идентификаторы, но насколько знаю, так работает только в оракле.
По-хорошему, вайтлист должен кидать 404.
Здравствуй, Баев!Поскольку я затрудняюсь понять, где чей сарказм и кто кого троллит, сообщения я удалил.
$one = 'some text with ?s placeholders';
$where = $db->parse("one = ?s",$one);
assert('$where instanceof SafeMysqlString');
$data = $db->getAll("SELECT * FROM table WHERE ?q LIMIT ?i,?i", $where,$start,$per_page); // $q - (instanceof SafeMysqlString)->__toString()