Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PDOStatement queryString текст запроса, Нужно вывести текст запроса 
:(
    Опции темы
Veve
Дата 25.10.2009, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: 1
Всего: 13



Привет. Пытаюсь перейти на использование 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


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


PM MAIL ICQ Skype MSN   Вверх
Ипатьев
Дата 25.10.2009, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 3
Всего: 37



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

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

PM MAIL   Вверх
Veve
Дата 25.10.2009, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: 1
Всего: 13



Забавно :( Как тогда к примеру писать те же логи?
PM MAIL ICQ Skype MSN   Вверх
Ипатьев
Дата 25.10.2009, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 3
Всего: 37



Можно написать обертку над ПДО, которая будет подставлять данные и писать запрос в лог  smile 
PM MAIL   Вверх
Veve
Дата 25.10.2009, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: 1
Всего: 13



Допустим.... но как -то это всё.. ммм
Как потом получить к примеру bindParam?
Код

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

PM MAIL ICQ Skype MSN   Вверх
Kevin
Дата 25.10.2009, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 20.11.2005

Репутация: нет
Всего: 2



Перегрузить bindParam(), bindValue() и execute(); и из полученных 
параметров собрать запрос, самостоятельно заменив метки 
в prepared statement запросе smile
PM MAIL   Вверх
Veve
Дата 25.10.2009, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: 1
Всего: 13



тогда не вижу смысла в использование PDO smile Всё перепиши, да замени smile
PM MAIL ICQ Skype MSN   Вверх
sTa1kEr
Дата 25.10.2009, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 9
Всего: 146



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

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

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

Это сообщение отредактировал(а) sTa1kEr - 25.10.2009, 21:36
PM MAIL   Вверх
Ипатьев
Дата 25.10.2009, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 3
Всего: 37



SQL - слишком хорошая штука, чтобы так легко поменять ее на что-то другое.
Это практически регулярки в data manipulation. Все нужное и ничего лишнего. И когда я вижу, что из них делают, к примеру, ORM, мне становится странно. 
PM MAIL   Вверх
solenko
Дата 26.10.2009, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 7
Всего: 67



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

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


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
bars80080
Дата 22.5.2014, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



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


PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0796 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.