Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] i PDO - problem z nowo utworzonymi tabelami
Forum PHP.pl > Forum > Przedszkole
ixpack
Proszę was - pomocy! Włosy tracę...

Postanowiłem przesiąść się na PDO - wszystko fajnie, ale niektóre tabele mi "nie działają"...

Poniższy kod dla jednych tabel działa, a dla innych już nie... Początkowo myślałem, że problem tkwi w "_" w nazwie, ale nie... Już włosów mi brak - może macie jakieś rady, co do PDO?

  1. $u = 'user';
  2. $pass = 'pass';
  3.  
  4. try {
  5. $dbh = new PDO('mysql:host=ip.ip.ip.ip;dbname=baza_danych', $u, $pass);
  6. foreach($dbh->query("SELECT * from tclo_brands") as $row) {
  7. print_r($row);
  8. }
  9. $dbh = null;
  10. } catch (PDOException $e) {
  11. print "Error!: " . $e->getMessage() . "<br />";
  12. die();
  13. }



Z góry dzięki za pomoc.
Mephistofeles
Co wywala?
Spróbuj zawrzeć to w `` => `tclo_brands`.
ixpack
Wywala

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'baza.tclo_brands' doesn't exist.

Ale tabele na są - problem jest ze wszystkimi tabelami, które tworzę od kilku dni... Te, "stare" działają ok.

Problem mam i na lokalnej maszynie i na serwerze...

Próbowałem brać w ', " - problem wydaje się po stronie serwera tylko, że na phpmyadminie wszystkie tabele są, korzystając z mysqli nie ma tego problemu... Tak jakby PDO sprawdzało jakiś cashe zanim sprawdzi czy tabela jest :/.

O losie.
Mephistofeles
` to nie apostrofy, wpisuje się je klawiszem z tyldą. Spróbuj.
ixpack
Niestety - problem chyba leży po stronie serwera mysql, szukałem, nie znalazłem sad.gif

Nawet jak wybieram NOWĄ tabelę bez podkreślników itp. to ten sam problem - tak jakby PDO nie widziało nowych tabel :/ dziwne. Stare tabele (już ponad roczne) działają tak jak powinny... Nowe nie.

Poddaję się i zamiast PDO używać będę jak do tej pory mysqli :/ też ma prepare - bo głównie o to mi chodzi.

Chciałem iść z duchem czasu winksmiley.jpg PDO jednak mi śmierdzi i może wrócę do tego za jakieś 2-3 miechy. No chyba, że ktoś mnie nakieruje winksmiley.jpg


================== Następnego dnia...:===============================
Ok rozwiązałem problem biggrin.gif

Konfiguracja mojego dedyka jest skopana, a że z linuxem nie jestem na "Przyjacielu", raczej tylko na "kolego" - więc tego nie ruszam...

Rozwiązanie: zamiast podawać ip.ip.ip.ip bazy do której się łącze wystarczy wstawić localhost ;D (zapewne jakbym łączył się z bazą, która nie jest postawiona na tym samym serwerze, to by było ok...) - oczywiście z lokalnej maszyny mi nadal nie działa (z adresem ip.ip.ip.ip winksmiley.jpg uprawnienia - za pewne dotyczy to tylko mojego dedyka), ale jak wrzucę skrypt na serwer wraz ze zmienionym adresem bazy - to działa. Dziwne?!

Ponad to wyczytałem gdzieś, że należy podawać całą nazwę tabeli: baza.tabela - ale u mnie to nie pomagało...

W moim przypadku skopane ustawienia serwera.

  1. <?php
  2.  
  3. $hostname = 'localhost'; //jakbym TU podał ip servera sql - to by mi nie działało...
  4.  
  5. $username = 'user z uprawnieniami';
  6.  
  7. $password = 'haslo';
  8.  
  9. try {
  10. $dbh = new PDO("mysql:host=$hostname;dbname=baza_danych", $username, $password);
  11.  
  12. echo 'Polaczony<br />';
  13.  
  14. $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  15.  
  16. $sql = 'SELECT * FROM tclo_brands';
  17. foreach ($dbh->query($sql) as $row)
  18. {
  19. print $row['brand_id'] .' - '. $row['brand_name'] . '<br />';
  20. }
  21.  
  22. $dbh = NULL;
  23. }
  24. catch(PDOException $e)
  25. {
  26. echo $e->getMessage();
  27. }
  28.  
  29. ?>
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.