Niestety - problem chyba leży po stronie serwera mysql, szukałem, nie znalazłem

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

PDO jednak mi śmierdzi i może wrócę do tego za jakieś 2-3 miechy. No chyba, że ktoś mnie nakieruje

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

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

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.
<?php
$hostname = 'localhost'; //jakbym TU podał ip servera sql - to by mi nie działało...
$username = 'user z uprawnieniami';
$password = 'haslo';
try {
$dbh = new PDO("mysql:host=$hostname;dbname=baza_danych", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = 'SELECT * FROM tclo_brands';
foreach ($dbh->query($sql) as $row)
{
print $row['brand_id'] .' - '. $row['brand_name'] . '<br />'; }
$dbh = NULL;
}
catch(PDOException $e)
{
}
?>