Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZF] Zapytania z warunkiem. Czy używać metody quoteInto?
Master Pain
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 5.04.2007
Skąd: Jarocin

Ostrzeżenie: (0%)
-----


Witam

Przejdę od razu do meritum. Klasę modelu dziedziczę po Zend_Db_Table_Abstract.
Podczas wykonywania zapytań z warunkiem, np. usunięcie rekordu o id = 5, stosuję kod:
  1. //$id = 5
  2. return $this->delete(array('id = ?', $id)); // UPDATE wyjaśniony parę postów niżej. Wystąpił tutaj mały błąd, powinno być tak jak linijka poniżej
  3. return $this->delete(array('id = ?' => $id));

Czy wystarczy to, żeby ZF sam zastosował znaki ucieczki? Czy powinienem mimo wszystko zastosować metodę 'quoteInto':
  1. return $this->delete($this->_db->quoteInto('id = ?', $id));


Analogicznie przy 'select':
  1. return $this->_db->fetchRow($this->getAdapter()->select()->from($this->_name)->where('id = ?', $id));

czy raczej:
  1. return $this->_db->fetchRow($this->getAdapter()->select()->from($this->_name)->where($this->_db->quoteInto('id = ?', $id));

(IMG:style_emoticons/default/questionmark.gif)

Pozdrawiam!

Ten post edytował Master Pain 18.12.2009, 23:59:03
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Akurat w powyższym przypadku nie jest to konieczne, zwłaszcza że:
Cytat
Numeric datatypes are not quoted, and other types are quoted.

[za:] http://framework.zend.com/manual/en/zend.d...ting.quote-into

Dodam, że zależy też od użytego adaptera, w przypadku pdo wydaje się, że w ogóle nie ma potrzeby stosowania metody quoteInto, gdyż parametry są za każdym razem bindowane do znaków zapytania.

Cytat
Czy wystarczy to, żeby ZF sam zastosował znaki ucieczki?

W podanym przez Ciebie przykładzie nie ma miejsca, ani potrzeby na stosowanie znaku ucieczki

Ten post edytował darko 18.12.2009, 23:26:16
Go to the top of the page
+Quote Post
Master Pain
post
Post #3





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 5.04.2007
Skąd: Jarocin

Ostrzeżenie: (0%)
-----


Fakt, nie pomyślałem, że dla int-ów nie musi być tak samo jak dla stringów. Co w przypadku, jeżeli przekazuję string? Należy stosować quoteInto? I tak, korzystam z PDO.

Ten post edytował Master Pain 18.12.2009, 23:27:27
Go to the top of the page
+Quote Post
darko
post
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Przyznam, że nigdy nie korzystałem z tej metody i jakoś mi jej w ogóle nie potrzeba (PDO). Dla PDO nie trzeba, tam każdy parametr jest bezpiecznie "eskejpowany", "quote'owany" etc. i na końcu bindowany do treści zapytania.

Ten post edytował darko 18.12.2009, 23:30:47
Go to the top of the page
+Quote Post
Master Pain
post
Post #5





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 5.04.2007
Skąd: Jarocin

Ostrzeżenie: (0%)
-----


Bardzo dziękuję za odpowiedzi. I to jak szybko!
Go to the top of the page
+Quote Post
darko
post
Post #6





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Akurat się na święta rozchorowałem i z nudy "siedzę sobie na" forum. No cóż. Wesołych Świąt!
Go to the top of the page
+Quote Post
Master Pain
post
Post #7





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 5.04.2007
Skąd: Jarocin

Ostrzeżenie: (0%)
-----


Oczywiście wkradł się błąd mały, update'y porobione i opisane, ale problem nadal rozwiązany.
Przeszedłem się też po kodzie i ZF i tak korzysta z quoteInto w metodzie _whereExpr, jeżeli klucz tablicy nie jest intem, czyli to, co w moim przypadku.

No i również Wesołych Świąt!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 08:23