Piszę sobie jakąś prostą klasę do obsługi zapytań. Ogólnie działa ale, zawsze znajdzie się jakieś ale. Ogólnie nie mam jeszcze obsłużonego bindowania danych. Zasada działania metody select()
jest to, że jeśli parametr $type przyjmuje 1 to pobierz wiele rekordów, jeśli 2 to pobierz jeden konkretny określony przy pomocy zapytania. Coś mi się wydaje, że nieco przekombinowałem dlatego czekam na Wasze opinie i rady jak to napisać lepiej. Jednym słowem czekam na konstruktywną krytykę :) Wrzucam wszystko w "jednym ciągu" bez dzielenia na pliki, żeby wyraźniej było widać. Wie ktoś jak w kontekście tego kodu powinienem obsłużyć metodę bindValue() ?
<?php
class Database {
public $conn;
/**
* @param $host, $dbname, $user, $pass
* @return string
*/
public function connectDatabase($host, $dbname, $user, $pass) {
try {
$conn = new PDO('mysql:host='.$host.'; dbname='.$dbname.'', ''.$user.'', ''.$pass.'');
$conn->exec('SET CHARACTER SET utf8');
$this->conn = $conn;
} catch (Exception $error) {
print_r ('Invalid connection with database: '.$error->getMessage().'');
}
return $conn;
}
/**
* If $ type = 1 to select multiple records otherwise $type = 2 and to select only one record
* @param $type, $query
* @return int, string
*/
public function select($type, $query) {
if ($type === null) {
return false;
} else if ($type === 1) {
$get = $this->conn->prepare($query);
if (!$get->execute()) {
print_r($get->errorInfo());
}
} else if ($type === 2) {
$get = $this->conn->prepare($query);
if (!$get->execute()) {
print_r($get->errorInfo());
} else {
$row = $get->fetch();
}
} else {
return false;
}
return $get;
}
}
# Initialize function
$data = array(
'localhost' => define('HOST', 'localhost'),
'dbname' => define('DBNAME', 'tests'),
'user' => define('USER', 'root'),
'pass' => define('PASS', '')
);
$object = new Database;
$connection = $object->connectDatabase(HOST, DBNAME, USER, PASS);
# Display multiple records = $type = 1;
$get = $object->select(1, "SELECT `id`, `text` FROM `example_table`");
foreach ($get as $row) {
echo '<p>'.$row['text'].'</p>';
}
# Display of one record - $type = 2;
$get = $object->select(2, "SELECT `id`, `text` FROM `example_table`");
foreach ($get as $row) {
echo '<p>'.$row['text'].'</p>';
}
?>