Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > PDOStatement queryString текст запроса


Автор: Veve 25.10.2009, 10:39
Привет. Пытаюсь перейти на использование PDO в проектах. Но пока не очень получается smile
Как вывести текст sql текст запроса?
Если делать так:
Код

 $select=$this->DataBase->prepare("
                SELECT
                    f1
                FROM
                    users where f2=:p2 and f3=:p3");

        $select->bindParam(':p2',$p2);
        $select->bindParam(':p3',$p3);
        echo $select->queryString;


, то sql текст будет выглядеть так

Код

SELECT f1 FROM users where f2=:p2 and f3=:p3


а нужно с подстановкой, к примеру так:


Код

SELECT f1 FROM users where f2='f2' and f3=333


Как это можно сделать? 


Автор: Ипатьев 25.10.2009, 11:11
Насколько я знаю - никак.
В том-то и фишка, что никакого SQL запроса в классическом понимании здесь нету. В базу отправляется именно " f2=:p2 and f3=:p3".

Из-за этого лично я не очень люблю использовать подготовленные выражения.

Автор: Veve 25.10.2009, 11:19
Забавно :( Как тогда к примеру писать те же логи?

Автор: Ипатьев 25.10.2009, 11:43
Можно написать обертку над ПДО, которая будет подставлять данные и писать запрос в лог  smile 

Автор: Veve 25.10.2009, 12:13
Допустим.... но как -то это всё.. ммм
Как потом получить к примеру bindParam?
Код

$select->bindParam(':p2',$p2);

Автор: Kevin 25.10.2009, 14:11
Перегрузить bindParam(), bindValue() и execute(); и из полученных 
параметров собрать запрос, самостоятельно заменив метки 
в prepared statement запросе smile

Автор: Veve 25.10.2009, 14:48
тогда не вижу смысла в использование PDO smile Всё перепиши, да замени smile

Автор: sTa1kEr 25.10.2009, 21:33
Цитата(Ипатьев @  25.10.2009,  12:11 Найти цитируемый пост)
В базу отправляется именно " f2=:p2 and f3=:p3".

Из-за этого лично я не очень люблю использовать подготовленные выражения.

А что в этом плохого?

Автор: Ипатьев 25.10.2009, 21:43
SQL - слишком хорошая штука, чтобы так легко поменять ее на что-то другое.
Это практически регулярки в data manipulation. Все нужное и ничего лишнего. И когда я вижу, что из них делают, к примеру, ORM, мне становится странно. 

Автор: solenko 26.10.2009, 10:23
Цитата(Veve @  25.10.2009,  09:39 Найти цитируемый пост)
Как вывести текст sql текст запроса?

Никак. Для отладки пользуюсь mysqlproxy либо полным логом запросов.

Автор: bars80080 22.5.2014, 14:06
за 5 лет по вопросу прогресса нет?
потому что я пока вижу решения только 
Цитата(Kevin @  25.10.2009,  14:11 Найти цитируемый пост)
из полученных 
параметров собрать запрос, самостоятельно заменив метки 
в prepared statement запросе


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)