Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PostgreSQL][PHP]Błąd podczas wysyłania danych do bazy postgres
Forum PHP.pl > Forum > Przedszkole
freez
Witam, mam problem ze wstawianiem danych do bazy postgres. Dane są wysylane z formularza Flash.
Mianowicie wyskakuje mi taki błąd

Kod
PHP Warning:  pg_query() [<a href='function.pg-query'>function.pg-query</a>]: Query failed: ERROR:  column &quot;cegielka&quot; does not exist in C:\wamp\www\ma\post\classes\pg.php on line 42


Plik pg.php wyglada następujaco

Kod
<?php
class Database {

  protected $host;
  protected $port;  
  protected $user;
  protected $pwd;
  protected $dbName;
  protected $flash;
  protected $dbLink;
  protected $result;
  protected $resultObj;

  function __construct($dbName,$user, $pwd, $port, $flash=1){
    $this->host = $host;
    $this->user = $user;
    $this->pwd = $pwd;
    $this->port = $port;
    $this->dbName = $dbName;
    $this->flash = $flash;
    $this->connect();
    }          
              
  // Po??cz si? z serwerem mySQL i wybierz baz? danych
  public function connect() {
    try {
       $this->dbLink=@pg_connect("dbname=".$this->dbName."  user=".$this->user." password=".$this->pwd." port=".$this->port." ");    
      if (!$this->dbLink) {
        throw new Exception ("Nie mozna bylo polaczyc uzytkownika $this->user z baza $this->dbName");
         }
      }
    catch (Exception $e) {
      echo $this->flash ? 'error='.urlencode($e->getMessage()) : $e->getMessage();
      exit();
      }
    return $this->dbLink;
    }

// Wykonaj zapytanie SQL
  public function query($query) {
    try {
      $this->result = pg_query($this->dbLink, $query);
      if (!$this->result) {
        throw new Exception ('Błąd SQL: ' .  pg_errormessage($this->dbLink));
        }
      }
    catch (Exception $e) {
      echo $this->flash ? 'error='.urlencode($e->getMessage()) : $e->getMessage();
      exit();
      }
    
    $this->resultObj = new MyResult($this->result);
    return $this->resultObj;
    }

   // zamknij połączenie SQL
  public function close(){
    pg_close($this->dbLink);
    }    
  }

class MyResult {

  protected $theResult;
  public $num_rows;
  
  function __construct($r) {
      if (is_bool($r)) {
        $this->num_rows = 0;
        }
      else {
        $this->theResult = $r;
        // pobierz całkowitą liczbę znalezionych rekordów
        $this->num_rows = pg_num_rows($r);
        }
    }
  
  // pobierz asocjacyjną tablicę wyników (przetwarza naraz jeden wiersz)  
  function fetch_assoc() {
    $newRow = pg_fetch_assoc($this->theResult);
    return $newRow;
    }
  }
?>




plik wstawiajacy dane do bazy

Kod
<?php

// ustaw porządek sortowania wyników
$order = ' ORDER BY family_name, first_name, username';

// dołącz klasy bazy danych
require_once('C:\wamp\www\ma\post\classes\pg.php');

// jeśli "magiczne cudzysłowy" są wyłączone, poprzedź wszystkie cudzysłowy i apostrofy znakami specjalnymi
foreach($_POST as $key=>$value) {
  if (!get_magic_quotes_gpc()) {
    $temp = addslashes($value);
    $_POST[$key] = $temp;
    }
  }

// Zarejestruj nowego użytkownika, jeśli w tablicy POST zmienna "action" jest ustawiona na "register"
if ($_POST['action'] == 'register') {
// sprawdź, czy podana nazwa nie jest już w użyciu
  $unique = checkDuplicate($_POST['username']);
  if ($unique) {
      
    $db = new Database('flash' , 'postgres', 'koszalin', '5432');
   $sql = 'INSERT INTO users (first_name,family_name,username,pwd)
         VALUES ('.$_POST['first_name'].','.$_POST['family_name'].','.$_POST['username'].','.$_POST['pwd'].')';

    $result = $db->query($sql);
    if ($result) {
      $created = 'Utworzono konto dla  ';
      $created .= stripslashes($_POST['first_name']).' '.stripslashes($_POST['family_name']);
      echo 'duplicate=n&message='.urlencode($created);
      }
    }
  }
elseif ($_POST['action'] == 'listAll') {
  // pobranie pełnej listy użytkowników
  $sql = 'SELECT * FROM users'.$order;
  echo getUserList($sql);
  }
elseif ($_POST['action'] == 'find') {
  // wyszukiwanie po imieniu, itd.
  // usuń wszystkie krańcowe białe znaki z danych wejściowych użytkownika
  $input['first_name'] = trim($_POST['first_name']);
  $input['family_name'] = trim($_POST['family_name']);
  $input['username'] = trim($_POST['username']);
  // utwórz tablicę parametrów wyszukiwania, z której skorzysta się w zapytaniu SQL
  $searchParams = array();
  $i = 0;
  foreach ($input as $key => $value) {
    if (strlen($value) > 0) {
      $searchParams[$i] = $key.' LIKE "%'.$value.'%"';
      $i++;
      }
    }
  // utwórz zapytanie SQL i połącz je z parametrami oraz porządkiem sortowania
  $sql = 'SELECT * FROM users WHERE '.join($searchParams,' AND ').$order;
  // wyślij zapytanie do bazy danych i prześlij z powrotem wyniki
  echo getUserList($pg);
  }
elseif ($_POST['action'] == 'getDetails') {
  // pobierz szczegóły dotyczące użytkownika w celu aktualizacji
  $sql = 'SELECT * FROM users WHERE user_id = '.$_POST['user_id'];
  echo getDetails($sql);
  }
elseif ($_POST['action'] == 'doUpdate') {
  // aktualizuj rekord
  $unique = checkDuplicate($_POST['username'], $_POST['user_id']);
  if ($unique) {
    $db = new Database('flash' , 'postgres', 'koszalin', '5432');
    $sql = 'UPDATE users SET first_name = '.$_POST['first_name'].', family_name = '.$_POST['family_name'].', username = '.$_POST['username'].'';
    if ($_POST['pwdChange'] == 'newPwd') {
      $sql .= ', pwd = '.sha1($_POST['pwd']).'';
    }
    $sql .= ' WHERE user_id = '.$_POST['user_id'];
    $db->query($sql);
    $db->close();
    $updated = 'Zaktualizowano konto  ';
    $updated .= stripslashes($_POST['first_name']).' '.stripslashes($_POST['family_name']);
    $output = 'duplicate=n&message='.urlencode($updated);
    // wyświetl zmodyfikowaną listę użytkowników
    $revisedList = 'SELECT * FROM users'.$order;
    echo $output .= '&'.getUserList($revisedList);
    }
  }
elseif ($_POST['action'] == 'doDelete') {
  // usuń rekord
  $db = new Database('flash' , 'postgres', 'koszalin', '5432');
  $sql = 'DELETE FROM users WHERE user_id = '.$_POST['user_id'];
  $db->query($sql);
  $db->close();
   // wyświetl zmodyfikowaną listę użytkowników
  
  $revisedList = 'SELECT * FROM users'.$order;
  $deleted = 'Usunieto konto: '.stripslashes($_POST['who']);
  $output = 'duplicate=n&message='.urlencode($deleted);
  echo $output .= '&'.getUserList($revisedList);
  }
elseif ($_POST['action'] == 'logout') {
  // kod wylogowywania powinien być umieszczony w tym miejscu
  unset($_SESSION['authenticated']);
  session_destroy();
  echo 'status=goodbye';
  }

// SprawdĽ istnienie powtarzaj±cych się nazw użytkowników
function checkDuplicate($username, $user_id = 0) {
  $db = new Database('flash' , 'postgres', 'koszalin', '5432');
  
  $sql = "SELECT username FROM users WHERE username = ".$_POST['username'];
  // jeśli jako argument przekazano także user_id dodaj odpowiedni fragment SQL
  if ($user_id > 0) {
    $sql .= 'AND user_id != $user_id';
    }
  $result = $db->query($sql);
  $numrows = $result->num_rows;
  $db->close();
  
    // jeśli nazwa użytkownika jest już w użyciu, prześlij komunikat o błędzie
  if ($numrows > 0) {
    $duplicate = 'Nazwa uzytkownika sie powtarza. Wybierz inna.';
    echo 'duplicate=y&message='.urlencode($duplicate);
    exit();
    }
  else {
    return true;
    }
  }
// pobierz listę użytkowników
function getUserList($sql) {
  $db = new Database('flash' , 'postgres', 'koszalin', '5432');
  $result = $db->query($sql);
  $numrows = $result->num_rows;
  $userlist = "total=$numrows";
  $counter = 0;
  while ($row = $result->fetch_assoc()) {
    $userlist .= '&user_id'.$counter.'='.$row['user_id'];
    $userlist .= '&first_name'.$counter.'='.urlencode($row['first_name']);
    $userlist .= '&family_name'.$counter.'='.urlencode($row['family_name']);
    $userlist .= '&username'.$counter.'='.urlencode($row['username']);
    $counter++;
    }
  $db->close();
  return $userlist;
  }
// pobierz szczegóły pojedynczego rekordu
function getDetails($sql) {
  $db = new Database('flash' , 'postgres', 'koszalin', '5432');
  $result = $db->query($sql);
  while ($row = $result->fetch_assoc()) {
    $details = 'user_id='.$row['user_id'];
    $details .= '&first_name='.urlencode($row['first_name']);
    $details .= '&family_name='.urlencode($row['family_name']);
    $details .= '&username='.urlencode($row['username']);
    $details .= '&pwd='.$row['pwd'];
    }
  $db->close();
  return $details;
  }
?>



Jak to zrobić, męcze sie juz z tym pare dni sciana.gif
vokiel
Znasz trochę angielski?
Cytat
column "cegielka" does not exist

Znaczy, że kolumna "cegielka" nie istnieje
freez
Cytat(vokiel @ 19.10.2009, 12:36:47 ) *
Znasz trochę angielski?
Znaczy, że kolumna "cegielka" nie istnieje


w tym przypadku "cegielka" jest dana przekazana z flasha do php
nospor
po pierwsze: uzywaj poprawnego bbcode! do kodu php ma to byc PHP.

po drugie: wartosci tekstowe to sie chyba w apostrofach wklada.
czyli nie: cegielka
a: 'cegielka'

po trzecie: przenosze
mls
Po piąte i dziesiąte - życzę powodzenia z takim zapisem:
  1. require_once('C:\wamp\www\ma\post\classes\pg.php');
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.