Это ещё почему? Там показано отдельно с prepare и executeА смысл?
- так сделать не получится.PHP:$stmt = $db->prepare("select * from t where i in ?a"); $stmt->execute(array(1)); $stmt->execute(array(1,2));
Это ещё почему? Там показано отдельно с prepare и executeА смысл?
- так сделать не получится.PHP:$stmt = $db->prepare("select * from t where i in ?a"); $stmt->execute(array(1)); $stmt->execute(array(1,2));
Это ещё почему? Там показано отдельно с prepare и execute
$stmt = pg_prepare($conn, 'multitest', 'insert into roles (role_name) values ($1), ($2), ($3)');
$res = pg_execute($conn, 'multitest', array('Тестовый админ', 'Тестовый юзер', 'Тестовый придурок'));
все эти ваши архитектурные муки выбора "куда сохранять значения" - высокое искусство на фоне бытовых задач анализа логов видауже подствленные данные в конечном запросе будут всяко нагляднее именованного плейсхолдера
методами PHP вы полный текст запроса не вытяните никак - только из лога MySQL, а попробуйте включить лог на 100-гигабайтной базе?2013/03/27 19:48:04 [trace] [system.db.CDbCommand] Executing SQL: INSERT INTO `customers_basket_list_x_product` (`basket_list`, `product_id`, `quantity`, `product_price`, `product_status`, `option_id`, `date_add`) VALUES ( :yp0, :yp1, :yp2, :yp3, :yp4, :yp5, NOW()). Bound with :yp0='110', :yp1='617109', :yp2='3', :yp3='550', :yp4='3', :yp5=NULL
in /newrpc/models/ServiceOrderCartItem.php (253)
Ну вот парсер-то уже естьв обычной жизни хочется такой парсер плейсхолдеров
А теперь то же самое для IN(), пожалуйста. Ну или любое другое решение, пригодное для mysql.Это ещё почему? Там показано отдельно с prepare и execute
А зачем мне? ЯА теперь то же самое для IN(), пожалуйста. Ну или любое другое решение, пригодное для mysql.
Тут обсуждается мыскльная либа, если ты не заметил.А зачем мне? Яговна не емMySQL не пользуюсь.
Так а почему не вТут обсуждается мыскльная либа, если ты не заметил.
Вот кстати да, было бы весьма интересно.Кстати, Давид сделал себе либу на типизованных плейсхолдерах для ПДО и постгреса.
Надо спросить, не выложит ли.
В общем поглядывая на тот класс, сделал свой, тестов еще не написал, но вроде все должно работать То есть можно одновременно использовать и именованные и не именованные плейсхолдеры, и вроде как даже на один плейсхолдер биндить несколько значенийНу вот смртри, тут примеры:
http://phpfaq.ru/examples#where
http://phpfaq.ru/examples#multiparse
В текущем варианте данные подставляются прямо на месте
А если их копить отдельно, то куда? В отдельную глобальную переменную? Пременную класса? Ни то ни другое мне не нравится.
ё. А куда ты его убрал-то?В общем поглядывая на тот класс, сделал свой, тестов еще не написал, но вроде все должно работать То есть можно одновременно использовать и именованные и не именованные плейсхолдеры, и вроде как даже на один плейсхолдер биндить несколько значений
пропустил вопрос на той неделеgrigori
а в чем проблема подставить значения в запрос самостоятельно для записи в лог?
В общем тесты(своеобразные) добавил, вроде все работаетФанат
а... неймспейс еще один добавил)
https://github.com/hell0w0rd/dbal/blob/master/src/Fountain/Dbal/Pdo.php
тесты скоро добавляю, понял как сделать)
case 'a':
$part = $this->createIN($value);
break;
private function createIN($data)
{
//...
foreach ($data as $value)
{
$query .= $comma.$this->escapeString($value); //Все числа заключаются в кавычки.
$comma = ",";
}
//...
}