Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]PDO z MySQL jakaś dziwna sprawa z podstawieniem nazwy tabeli w bazie
Forum PHP.pl > Forum > Przedszkole
cve
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.
Mephistofeles
Nie można podpinać nazw tabel. Niestety.
cve
A szkoda, dziekuje za cenna informacje winksmiley.jpg pozdrawiam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.