Используйте PDO.
Вот Вам на заметку. Думаю разберётесь сами что с этим делать.
//-------------------------- Класс работы с базой ----------------------------//
class DBPDO {
// Используем статическую переменную для сохранения значений внутри класса
static private $database = NULL;
// Конструктор выполняет соединение с БД возращает объект БД или false
private function __construct(){
try {
// Сразу задаём кодировку соединения
self::$database = new PDO('mysql:host=localhost; dbname=basename', 'user', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
// Устанавливаем уровень показа ошибок базы
self::$database->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e){
$error = $e->getMessage();
writelog('sql_error', date("y.m.d H:m:s")."\t".$error);
return false;
}
}
// Статическая функция синглтон для получения объекта ДБ
static public function dbconnect() {
if (self::$database == NULL) { new DBPDO(); }
return self::$database;
}
// Функция выполнения запроса
static public function sql_query($query) {
try {
$return = self::dbconnect()->query($query)->fetchAll(PDO::FETCH_ASSOC);
if ($return === false) return false;
if ((!isset($return[1]))&&(isset($return[0]))) $return = $return[0];
}
catch (PDOException $e) {
$error = $e->getMessage();
writelog('sql_error', date("y.m.d H:m:s")."\t".$error);
return false;
}
return $return;
}
// Запрос без выборки
static public function exec($query) {
try {
return self::dbconnect()->exec($query);
}
catch (PDOException $e) {
$error = $e->getMessage();
writelog('sql_error', date("y.m.d H:m:s")."\t".$error);
return false;
}
}
// Экранирование спецсимволов
static public function quote($str) {
return self::dbconnect()->quote($str);
}
// Получение id последней изменённой строки
static public function lastInsertId() {
return self::dbconnect()->lastInsertId();
}
}
//----------------------------------------------------------------------------//