witam, wgłębiam się w programowanie obiektowe (ksiązka zaawansowane programowanie w PHP),
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);
?>
Ten post edytował lamcpp 8.02.2010, 23:19:09