<?php class DatabaseManager { $conn = @new mysqli(DB_SERVER, DB_USERNAME, DB_PW, DB_DB); if(mysqli_connect_errno()) { $conn_errno = mysqli_connect_errno(); $conn_error = mysqli_connect_error(); // W przypadku wystąpienia problemów z połączeniem, zapisz informację w pliku LOG i zakończ działanie skryptu LogFile::AddLog("Nastapił błąd połączenia numer [ $conn_errno ] z bazą danych: o treści: [ $conn_error ]", __LINE__, __FILE__); } else { $conn->query("SET NAMES 'utf8'"); return $conn; } } $conn = self::getConnection(); //$SQL = $conn->real_escape_string($SQL); $result = $conn->query($SQL); if(!$result) { LogFile::AddLog("Wystąpił błąd połączenia z bazą danych!", __LINE__, __FILE__); return false; } else { while(($row = $result->fetch_array(MYSQLI_ASSOC)) !== NULL) { $resultArray[] = $row; } } return $resultArray; } else { LogFile::AddLog("Zapytanie bazodanowe zwróciło pusty wynik!", __LINE__, __FILE__); return false; } mysqli_close($conn); } $conn = self::getConnection(); $SQL = "SELECT "; $SQL .= $COLUMNS[0]; } else { foreach($COLUMNS as $column) { $SQL .= $column.","; } } $SQL .= " FROM {$TABLE}"; $SQL .= " WHERE "; foreach($WHERE as $key => $val) { $SQL .= $key.$LOGIC_OPER."'".$val."' ".$OPER." "; } } $result = $conn->query($SQL); if(!$result) { LogFile::AddLog("Wystąpił błąd połączenia z bazą danych!", __LINE__, __FILE__); return false; } else { while(($row = $result->fetch_array(MYSQLI_ASSOC)) !== NULL) { $resultArray[] = $row; } } return $resultArray; } else { LogFile::AddLog("Zapytanie bazodanowe zwróciło pusty wynik!", __LINE__, __FILE__); return false; } mysqli_close($conn); } $conn = self::getConnection(); $SQL = "UPDATE {$TABLE} SET "; foreach($SET as $key => $val) { $SQL .= $key."='".$val."',"; } $SQL .= " WHERE "; foreach($WHERE as $key => $val) { $SQL .= $key."='".$val."' ".$OPER." "; } } $result = $conn->query($SQL); if($result) { return true; } else { LogFile::AddLog("Zapytanie bazodanowe UPDATE nie wykonało się poprawnie!", __LINE__, __FILE__); return false; } mysqli_close($conn); } $conn = self::getConnection(); $SQL = "DELETE FROM {$TABLE}"; $SQL .= " WHERE "; foreach($WHERE as $key => $val) { $SQL .= $key."='".$val."' ".$OPER." "; } } $result = $conn->query($SQL); if(!($result)) { LogFile::AddLog("Usunięcie elementu bazy danych było nie możliwe do zrealizowania.", __LINE__, __FILE__); return false; } else { return true; } mysqli_close($conn); } $conn = self::getConnection(); $SQL = "INSERT INTO {$TABLE}"; $SQL .= " ("; foreach($DATA as $key => $val) { $SQL .= $key.","; } $SQL .= ") "; $SQL .= "VALUES"; $SQL .= " ("; foreach($DATA as $val) { $SQL .= "'".$val."',"; } $SQL .= ")"; $result = $conn->query($SQL); if(!($result)) { LogFile::AddLog("Wstawienie nowego elementu do bazy danych zakończyło się niepowodzeniem.", __LINE__, __FILE__); return false; } else { return true; } mysqli_close($conn); } } ?>
takie przykładowe zapytanie:
DatabaseManager::selectBySQL("bla");
Dodawanie rekordów też podobnie typu tablica. W kodzie wszystko macie.
Oraz config z automatycznym ładowaniem klas.
<?php // OKREŚLENIE POŁOŻENIA STRONY W SERWISIE - DEFINICJA <BASE ... /> $AbsoluteURL .= $_SERVER['HTTP_HOST']; $AbsoluteURL .= $dirCat != '\\' ? $dirCat : ""; $NewURL = $slash != '/' ? $AbsoluteURL.'/' : $AbsoluteURL; // STAŁE DLA BAZY DANYCH // STAŁA DLA ADRESU I LOKALIZACJI APLIKACJI // STAŁA DLA LOKALIZACJI KATALOGÓW I PLIKÓW // Magiczna funkcja automatycznie ładująca klasy wg. zapotrzebowania function __autoload($className) { @include_once($className.".class.php"); } ?>
Czy takie rozwiązanie jest dobre? Chciałbym używać tego, jako podstawy w moim przyszłych projektach.