Autor Zpráva
Peter Tom
Profil
Dobrý deň,

Učím sa OOP na príkladoch z knihy PHP 6 Programujeme profesionálne.
class Widget {

    private $id;
    private $name;
    private $description; 
    private $hDB;
    private $needsUpdating = false;

    public function __construct($widgetID) {
      $this->hDB = pg_connect('host=pgsql1.dnsserver.eu dbname=db56575xteo user=db56575xteo password=*****');

      if(! is_resource($this->hDB)) {
        throw new Exception('Chyba při pokusu o připojení k databázi.');
      }

      $sql = "SELECT \"name\", \"description\" FROM widget WHERE widgetid =
              $widgetID";
      $rs = pg_query($this->hDB, $sql);
      if(! is_resource($rs)) {
        throw new Exception("Chyba pri nacítání dat z databáze.");
      }
Pri príkaze pg_query neviem vyriešiť príčinu chyby:
Warning: pg_query() [function.pg-query]: Query failed: ERROR: relation "widget" does not exist LINE 1: SELECT name, description FROM widget WHERE widgetid =1.
Poprosím o radu.
TomášK
Profil
V databázi neexistuje tabulka widget. Je potřeba ji vytvořit, pak by to mělo projít.
Peter Tom
Profil
TomášK:
Testujem to na webhostingu, kde som si vytvoril databázu Postgre a cez phpPgAdmin tabuľku widget a naplnil údajmi.
Skúšal som viacero variantov overenia úspešnosti pripojenia a aj príkaz pg_connection status vráti: PGSQL_CONNECTION_OK.
Neviem pochopiť, prečo potom sa php nevie dostať k tabuľke widget
TomášK
Profil
Chybová hláška je odpověď, kterou vygenerovala databáze, připojení k databázi bude v pořádku. Pro ověření můžeš zkusit dotaz, který nepoužívá žádnou tabulku, třeba SELECT 1. Seznam tabulek můžeš vypsat pomocí
SELECT table_schema,table_name
FROM information_schema.tables
ORDER BY table_schema,table_name;
Peter Tom
Profil
TomášK:
Pomohla podpora:
Po vygenerovaní databázy na hostingu sa vytvorí schéma public ale užívateľ k nej nemá vlastnícke právo a nemôže si vytvoriť tabuľky.
Musí si vytvoriť vlastnú schému s nejakým menom a toto doplniť pred názov tabuľky (mojaschema.názovtabulky) pri odvolávke v SQL príkaze na tabuľku.
Potom už funguje príkaz pg_query.
Ďakujem za rady.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: