mam problem bo przykłady są podane dla bazy innej niż MySQL, chciałem przerobić skrypt tak by było dla MySQL, ale wyskakuje błąd:
Cytat
Fatal error: Uncaught exception 'Exception' with message 'Nie moşna po�aczy� si� z baz� danych' in D:\usr\test\index.php:19 Stack trace: #0 D:\usr\test\index.php(70): Widget->__construct(1) #1 {main} thrown in D:\usr\test\index.php on line 19
Czyli nie można połączyć się z bazą, polecenie, które najpewniej jest źle to:
Kod
$this->hDB = mysqli_connect('localhost','root','','parts');
Czy ktoś mógłby pomóc jak to przerobić by działało w obiektówce?
Cały kod poniżej:
<?php class Widget{ private $id; private $name; private $description; private $hDB; private $needsUpdating = false; public function __construct($widgetID){ $this->hDB = mysqli_connect('localhost','root','','parts'); throw new Exception('Nie można połaczyć się z bazą danych'); } $sql = "SELECT nazwa,opis FROM artykul WHERE nr_artykulu=$widgetID"; $rs = mysqli_query($this->hDB, $sql); throw new Exception('Błąd przy wykonywaniu instrukcji wyboru.'); } if(! mysqli_num_rows($rs)){ throw new Exception('Szukanego artykułu nie ma w bazie danych'); } $data = mysqli_fetch_array($rs); $this->id = $widgetID; $this->name = $data['nazwa']; $this->description = $data['opis']; } public function getName(){ return $this->name; } public function getDescription(){ return $this->description; } public function setName($name){ $this->name; $this->needsUpdating = true; } public function setDescription($description){ $this->description = $description; $this->needsUpdating = true; } public function __destruct(){ if(! $this->needsUpdating){ return; } $sql = 'UPDATE artykul SET'; $sql .= "nazwa='".mysqli_real_escape_string($this->name)."',"; $sql .= "opis='".mysqli_real_escape_string($this->description)."'"; $sql .= "WHERE nr_artykulu=".$this->id; $rs = mysqli_query($this->hDB,$sql); throw new Exceptiopn('Wystąpił błąd podczas aktualizacji danych'); } mysqli_close($this->hDB); } } $obiekt = new Widget(1); ?>