Wpis z mikrobloga

https://gist.github.com/miedzwin/1472ebc3194c9bb5d630

Dlaczego $this->getSQL() w UserRepository zwraca mi taki SQL:

SELECT f0_.username AS username_0, f0_.username_canonical AS username_canonical_1, f0_.email AS email_2, f0_.email_canonical AS email_canonical_3, f0_.enabled AS enabled_4, f0_.salt AS salt_5, f0_.password AS password_6, f0_.last_login AS last_login_7, f0_.locked AS locked_8, f0_.expired AS expired_9, f0_.expires_at AS expires_at_10, f0_.confirmation_token AS confirmation_token_11, f0_.password_requested_at AS password_requested_at_12, f0_.roles AS roles_13, f0_.credentials_expired AS credentials_expired_14, f0_.credentials_expire_at AS credentials_expire_at_15, f0_.id AS id_16, f0_.facebook_id AS facebook_id_17, f0_.first_name AS first_name_18, f0_.created AS created_19, f0_.updated AS updated_20, f0_.profile_picture AS profile_picture_21 FROM fos_user f0_ WHERE f0_.first_name LIKE ?
tzn. znak zapytania w końcu SQL, zamiast parametru?
Podstawiałem parametr ręcznie i mam taki sam wynik.

#symfony2 #doctrine #php #webdevhelp
  • 6
@mariecziek: nie. Nie buduje się obecnie SQLu z parametrami. Robi to już driver sam, PDO który jest zakorzeniony w samym silniku PHP.

Driver sam w miejsca pytajników stawia parametry. Dlaczego? Bo spora część programistów to debile i nie zważają na problemy z SQL injection, tak więc ogólnie jest zakazane wstawiać parametry do SQL'a 0 - a wstawiać parametry do sqla zostawia się profesjonaliście - driverowi.
@Klopsztanga: No to w jaki sposób mam sprawdzić czy mam poprawny SQL?
Zacząłem grzebać przy SQL'u, ponieważ jeżeli mam ustawione $pagination = true, to zwraca mi taki bląd:

Too few parameters: the query defines 1 parameters but you only bound 0
a jeżeli mam ustawione jako $pagination = false, to mam:

[Syntax Error] line 0, col -1: Error: Expected SELECT, UPDATE or DELETE, got end of string.
Stąd grzebanie przy SQL,