Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Podmiana PostgreSQL na MySQL w klasie
Forum PHP.pl > Forum > Przedszkole
sq6aah
Witam,
Zacząłem uczyć się obiektowego PHP i mam w książce przykład klasy która łączy się z baza PostgreSQL, a ja chciałem podmienić na MySQL i nie wiem co mam źle.
  1. <?php
  2. class Widget {
  3. private $id;
  4. private $name;
  5. private $description;
  6. private $hDB;
  7. private $needsUpdating=false;
  8. public function __construct($widgetID){
  9. $this->hDB=new mysqli('localhost', 'marcin', 'marcin', 'artykul');
  10. if(! is_resource($this->hDB)){
  11. throw new Exception('Nie można się połączyc');
  12. }
  13. $sql="Select*From artykul Where nr_artykulu='$widgetID'";
  14. $wynik=$this->hDB->query($sql);
  15. if(!is_resource($wynik)){
  16. throw new Exception('Błąd wykonywania zapytania');
  17. }
  18. If($num=$wynik->num_rows==0){
  19. throw new Exception('Brak szukanego artykułu');
  20. }
  21. $artykul=$wynik->fetch_assoc();
  22. $this->id=$widgetID;
  23. $this->name=$artykul['nazwa'];
  24. $this->description=$artykul['opis'];
  25.  
  26. }
  27. public function getName(){
  28. return $this->name;
  29.  
  30. }
  31. public function setName($name) {
  32. $this->name=$name;
  33. }
  34. public function setDescription($description){
  35. $this->description=true;
  36. }
  37. public function _descruct(){
  38. if(!$this->needsUpdating){
  39. return;
  40. }
  41. $sql="Update artykul set nazwa='$this->name', opis='$this->description' where nr_artykulu='$this->id'";
  42. $wynik=$bd_lacz->query($sql);
  43. if(!is_resource($wynik)){
  44. throw new Exception('Błąd aktualizacji');
  45. }
  46.  
  47. }
  48. }
  49.  
  50.  
  51. ?>


Z góry dziękuję za pomoc.
nospor
Jakieś błedy?

  1. $wynik=$bd_lacz->query($sql);

Nigdzie nie widzę, byś gdzieś deklarował $bd_lacz
sq6aah
Właśnie zapomniałem dać kodu gdzie połączenie jest zdefiniowane pod $hBD. Problem jest z samym połączeniem z bazą na poczatku.
nospor
$this->hDB=new mysqli('localhost', 'marcin', 'marcin', 'artykul');
if(! is_resource($this->hDB)){

new mysql zwraca OBIEKT a ty to porównujesz z RESOURCE, wiec nic dziwnego ze ci sie wywala
sq6aah
w przypadku:
  1. $sql="Select*From artykul Where nr_artykulu='$widgetID'";
  2. $wynik=$this->hDB->query($sql);
  3. if(!is_resource($wynik)){
  4. throw new Exception('Błąd wykonywania zapytania');
  5. }

Też tak jest?
nospor
zobacz w manualu co zwraca query() a sie dowiesz.

poza tym nie:
Select*From
a:
Select * From
kusiu
Cytat(nospor @ 21.01.2010, 21:38:41 ) *
poza tym nie:
Select*From
a:
Select * From


taki zapis sql'a nie wywala błędu. Jedynie jest mniej czytelny...
nospor
@kusiu no faktycznie.
sq6aah
Witam ponownie,
pisze ponieważ nadal mam kłopoty z zamianą klasy napisanej pod PostgreSQL na MySQL.
Podam taką przykładową klasę. I mam pytanie czy ktoś mógłby mi porządnie wytłumaczyć jak dostosować ten kod pod MySQL żeby jakoś mi się to utrwaliło.

  1. <?php
  2. require_once('class.Entity.php'); //potrzebne pó_niej
  3. require_once('class.Individual.php');
  4. require_once('class.Organization.php');
  5.  
  6. class DataManager
  7. {
  8. private static function _getConnection() {
  9. static $hDB;
  10.  
  11. if(isset($hDB)) {
  12. return $hDB;
  13. }
  14.  
  15. $hDB = pg_connect("host=localhost port=5432 dbname=przykladowa user=php password=php")
  16. or die("Błšd połšczenia z bazš danych!");
  17. return $hDB;
  18. }
  19.  
  20. public static function getAddressData($addressID) {
  21. $sql = "SELECT * FROM \"adres\" WHERE \"adres_id\" = $addressID";
  22. $res = pg_query(DataManager::_getConnection(), $sql);
  23. if(! ($res && pg_num_rows($res))) {
  24. die("Błšd odczytu danych dla adresu pocztowego $addressID");
  25. }
  26.  
  27. return pg_fetch_assoc($res);
  28. }
  29.  
  30. public static function getEmailData($emailID) {
  31.  
  32. $sql = "SELECT * FROM \"email\" WHERE\"email_id\" = $emailID";
  33. $res = pg_query(DataManager::_getConnection(), $sql);
  34. if(! ($res && pg_num_rows($res))) {
  35. die("Błšd odczytu danych dla adresu email $emailID");
  36. }
  37.  
  38. return pg_fetch_assoc($res);
  39. }
  40.  
  41. public static function getPhoneNumberData($phoneID) {
  42.  
  43. $sql = "SELECT * FROM \"telefon\" WHERE \"telefon_id\" = $phoneID";
  44. $res = pg_query(DataManager::_getConnection(), $sql);
  45. if(! ($res && pg_num_rows($res))) {
  46. die("Błšd odczytu danych dla numeru telefonu $phoneID");
  47. }
  48.  
  49. return pg_fetch_assoc($res);
  50. }
  51. }
  52. ?>
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.