Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [kohana]Prepared statements? Obsługa db.
krzywy36
post
Post #1





Grupa: Zarejestrowani
Postów: 370
Pomógł: 43
Dołączył: 1.12.2007
Skąd: Kędzierzyn Koźle

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


Zaczynam dopiero pracę z kohaną i jest to mój pierwszy fw więc proszę o wyrozumiałość.
Mam Klase Model_News dziedziczącą po Kohana_Model, chcę wykonać zapytanie do bazy używając prepared statements, ale nie bardzo wiem jak się za to zabrać:
  1. $query = $this->_db->query(DATABASE::SELECT, $sql, false)->param(':id', $id)->as_array();

powyższy kod zwraca błąd ze składnią SQL
  1. SELECT * FROM news WHERE news_id = :id

Co robię źle?
Go to the top of the page
+Quote Post
MickDev
post
Post #2





Grupa: Zarejestrowani
Postów: 27
Pomógł: 2
Dołączył: 16.03.2010
Skąd: ~Sanok

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


Jak dokładnie wygląda ten błąd ?
Go to the top of the page
+Quote Post
krzywy36
post
Post #3





Grupa: Zarejestrowani
Postów: 370
Pomógł: 43
Dołączył: 1.12.2007
Skąd: Kędzierzyn Koźle

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


http://screenshooter.net/1283602/mkgorah
Go to the top of the page
+Quote Post
MickDev
post
Post #4





Grupa: Zarejestrowani
Postów: 27
Pomógł: 2
Dołączył: 16.03.2010
Skąd: ~Sanok

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


Pokaż cały kod, będzie jaśniejsza sytuacja
Go to the top of the page
+Quote Post
krzywy36
post
Post #5





Grupa: Zarejestrowani
Postów: 370
Pomógł: 43
Dołączył: 1.12.2007
Skąd: Kędzierzyn Koźle

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


Problem tkwi w tym że nie wiem jak konstruować poprawnie Prepared Statements (tak myśle) robiłem to na podstawie któregoś tutoriala ale nie chce działać ;/
  1. <?php
  2. defined('SYSPATH') or die('No direct script access.');
  3. class Model_News extends Kohana_Model
  4. {
  5. public function get_all_news($limit = 5)
  6. {
  7. $sql = "SELECT * FROM news ORDER BY news_date";
  8.  
  9. return $this->_db->query(DATABASE::SELECT, $sql, false)->as_array();
  10. }
  11. public function get_single_news($id)
  12. {
  13. $sql = "SELECT * FROM news WHERE news_id = :id";
  14. $query = $this->_db->query(DATABASE::SELECT, $sql, false)->param(':id', $id)->as_array();
  15.  
  16. }
  17. }
  18. ?>
Go to the top of the page
+Quote Post
MickDev
post
Post #6





Grupa: Zarejestrowani
Postów: 27
Pomógł: 2
Dołączył: 16.03.2010
Skąd: ~Sanok

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


A o jakiej wersji Kohany mowa ?
Go to the top of the page
+Quote Post
krzywy36
post
Post #7





Grupa: Zarejestrowani
Postów: 370
Pomógł: 43
Dołączył: 1.12.2007
Skąd: Kędzierzyn Koźle

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


3.0.9
Go to the top of the page
+Quote Post
MickDev
post
Post #8





Grupa: Zarejestrowani
Postów: 27
Pomógł: 2
Dołączył: 16.03.2010
Skąd: ~Sanok

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


Z tego co widzę to w funkcji get_single_news() nie zwracasz wyników.
Go to the top of the page
+Quote Post
krzywy36
post
Post #9





Grupa: Zarejestrowani
Postów: 370
Pomógł: 43
Dołączył: 1.12.2007
Skąd: Kędzierzyn Koźle

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


ta funkcja nie jest skończona ale nie w tym problem.
Wie ktoś jak używać prepared statements w kohanie 3?
Go to the top of the page
+Quote Post
MickDev
post
Post #10





Grupa: Zarejestrowani
Postów: 27
Pomógł: 2
Dołączył: 16.03.2010
Skąd: ~Sanok

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


Tutaj masz guide'a:
http://kohanaframework.org/guide/database/query/prepared
Go to the top of the page
+Quote Post
krzywy36
post
Post #11





Grupa: Zarejestrowani
Postów: 370
Pomógł: 43
Dołączył: 1.12.2007
Skąd: Kędzierzyn Koźle

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


ok, więc taki kod:
  1. $query = DB::query(DATABASE::SELECT, $sql, false)->param(':id', $id)->execute()->as_array();

się wykonuje, ale taki:
  1. $query = $this->_db->query(DATABASE::SELECT, $sql, false)->param(':id', $id)->as_array();

już nie.
Pytanie, dlaczego miałbym używać metod statycznych klasy DB skoro w modelu mam "wbudowany" obiekt tej klasy (zgaduje, że tej)
Czego w końcu używać i jeśli metod statycznych to po co _db w modelu?

Ten post edytował krzywy36 16.01.2011, 18:21:48
Go to the top of the page
+Quote Post
MickDev
post
Post #12





Grupa: Zarejestrowani
Postów: 27
Pomógł: 2
Dołączył: 16.03.2010
Skąd: ~Sanok

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


w 2 przypadku nie trzeba używać execute() ?
Go to the top of the page
+Quote Post
krzywy36
post
Post #13





Grupa: Zarejestrowani
Postów: 370
Pomógł: 43
Dołączył: 1.12.2007
Skąd: Kędzierzyn Koźle

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


funkcja (kilka postów wyżej) get_all_news działa bez execute.
Niezaleznie od tego czy dam execute czy nie, wywala błąd ze składnią SQL.

Ten post edytował krzywy36 16.01.2011, 18:56:15
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: 30.09.2025 - 14:19