Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]PDO z MySQL jakaś dziwna sprawa z podstawieniem nazwy tabeli w bazie
cve
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 18.09.2009

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


Witam, pojawiam się poraz kolejny pewnie z glupim problemem, ale dzieje się taka dziwna sytuacja z PDO, a własciwie to z zapytaniem do bazy chyba, mianowicie mam taki kod:
  1. public static function paginate($strona, $limit)
  2. {
  3. $strona = (int) $strona;
  4. $strona = $strona - 1;
  5. if($strona != 0) $strona = $strona * $limit;
  6.  
  7. $query = DB::prepare('SELECT * FROM posty LIMIT :strona, :limit');
  8. $query->bindValue(':strona', $strona, PDO::PARAM_INT);
  9. $query->bindValue(':limit', $limit, PDO::PARAM_INT);
  10. $query->execute();
  11. return $result = $query->fetchAll();
  12. }

to wszystko jest ok, ale gdy chce sobie zrobic taką paginacje "uniwersalną" czyli chce podstawic zmienna $from = 'posty':
  1. public static function paginate($strona, $limit, $from = 'posty')
  2. {
  3. $strona = (int) $strona;
  4. $strona = $strona - 1;
  5. if($strona != 0) $strona = $strona * $limit;
  6.  
  7. $query = DB::prepare('SELECT * FROM :from LIMIT :strona, :limit');
  8. $query->bindValue(':from', $from, PDO::PARAM_STR);
  9. $query->bindValue(':strona', $strona, PDO::PARAM_INT);
  10. $query->bindValue(':limit', $limit, PDO::PARAM_INT);
  11. $query->execute();
  12. return $result = $query->fetchAll();
  13. }

to dostaję oczywiscie takowy komunikat:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''posty' LIMIT 0, 4' at line 1' in C:\komputery\library\Pagination.php:16 Stack trace: #0 C:\komputery\library\Pagination.php(16): PDOStatement->execute() #1 C:\komputery\controller\IndexController.php(5): Pagination::paginate('1', 4) #2 C:\komputery\bootstrap.php(97): IndexController->index('1') #3 C:\komputery\public\index.php(5): require_once('C:\komputery\bo...') #4 {main} thrown in C:\komputery\library\Pagination.php on line 16

Gdy próbuję to zrobić z bindParam to jest to samo... nie mam juz pojecia co jest nie tak, zawsze mialem problemy z PDO niby fajne, ale zawsze musialem sie nie zle napocic podenerwowac, zeby ogarnac o co chodzi gdy o cos chodzilo...

Prosilbym o jakakolwiek pomoc jesli to mozliwe...

Poradziłem sobie w ten sposób:
  1. public static function paginate($strona, $limit)
  2. {
  3. $strona = (int) $strona;
  4. $strona = $strona - 1;
  5. if($strona != 0) $strona = $strona * $limit;
  6.  
  7. $from = 'posty';
  8. $sql = 'SELECT * FROM '.$from.' LIMIT :strona, :limit';
  9.  
  10. $query = DB::prepare($sql);
  11. $query->bindValue(':strona', $strona, PDO::PARAM_INT);
  12. $query->bindValue(':limit', $limit, PDO::PARAM_INT);
  13. $query->execute();
  14. return $result = $query->fetchAll();
  15. }

ale chcialbym wiedziec dlaczego ten wczesniejszy nie dziala.
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #2





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Nie można podpinać nazw tabel. Niestety.
Go to the top of the page
+Quote Post
cve
post
Post #3





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 18.09.2009

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


A szkoda, dziekuje za cenna informacje (IMG:style_emoticons/default/winksmiley.jpg) pozdrawiam.
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: 22.08.2025 - 12:23