Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Последний совершенный mysql запрос

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Rooner
Отправлено: 07 Сентября, 2012 - 16:19:02
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




Можно ли узнать последний совершенный mysql запрос?
Наподобие функции mysql_insert_id()
 
 Top
EuGen Администратор
Отправлено: 07 Сентября, 2012 - 16:52:12
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)






-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Okula
Отправлено: 07 Сентября, 2012 - 16:53:52
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Rooner, можно создать класс обёртку, который будет вести запись.
Например:
Регистрируем константы с параметрами соединения:
PHP:
скопировать код в буфер обмена
  1. define('MYSQLI_SERVER', 'localhost'); // сервер
  2. define('MYSQLI_USER', 'root'); // пользователь
  3. define('MYSQLI_PASSWORD', ''); // пароль
  4. define('MYSQLI_BASE', 'test'); // имя базы
  5. define('MYSQLI_CHARSET', 'utf8'); // кодировка соединения

Далее сам класс с которым мы будем работать.
PHP:
скопировать код в буфер обмена
  1. class Project_MySQLi {
  2.    
  3.     static private $instance = NULL;
  4.     private $mysqli = NULL;
  5.     private $end_sql = '';
  6.  
  7.  
  8.     private function __construct() {}
  9.     private function __clone() {}
  10.     private function __wakeup() {}
  11.    
  12.     public function __destruct() {
  13.         $this->mysqli->close();
  14.     }
  15.    
  16.     /**
  17.      * Соединение с БД
  18.      *
  19.      * @return \Project_MySQLi
  20.      */
  21.     static public function connect() {
  22.         if(self::$instance == NULL) {
  23.             self::$instance = new self();
  24.            
  25.             self::$instance->mysqli = new mysqli(MYSQLI_SERVER, MYSQLI_USER, MYSQLI_PASSWORD, MYSQLI_BASE);
  26.             self::$instance->mysqli->set_charset(MYSQLI_CHARSET);
  27.         }
  28.        
  29.         return self::$instance;
  30.     }
  31.    
  32.     /**
  33.      * Аналог метода query() в mysqli
  34.      *
  35.      * @param string $sql SQL запрос
  36.      * @return \mysqli_result
  37.      */
  38.     public function query($sql) {
  39.         $this->end_sql = $sql;
  40.         $query = $this->mysqli->query($sql);
  41.         return $query;
  42.     }
  43.    
  44.     /**
  45.      * Получить последний SQL запрос
  46.      *
  47.      * @return string
  48.      */
  49.     public function getEndSQL() {
  50.         return $this->end_sql;
  51.     }
  52.    
  53.     /**
  54.      * Ссылка на соединение
  55.      *
  56.      * @return \mysqli
  57.      */
  58.     public function getLink() {
  59.         return $this->mysqli;
  60.     }
  61.    
  62. }

Создание экземпляра класса и выполнение SQL запроса
PHP:
скопировать код в буфер обмена
  1. // Использование класса
  2.  
  3. $db = Project_MySQLi::connect(); // регистрация объекта
  4.  
  5. // делаем SQL запрос:
  6. $db->query("DROP TABLE `test`"); // Этим запросом удалили таблицу
  7. echo 'Последний SQL запрос: '.$db->getEndSQL();
 
 Top
Rooner
Отправлено: 07 Сентября, 2012 - 17:05:09
Post Id


Посетитель


Покинул форум
Сообщений всего: 291
Дата рег-ции: Авг. 2010  


Помог: 0 раз(а)




EuGen, не понял как включить данный лог и где он хранится, но ВСЕ запросы мне не требуются.
Okula, хм немного громоздко, но идея понятна, спасибо.
 
 Top
Okula
Отправлено: 07 Сентября, 2012 - 17:34:09
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Rooner, почему громоздко? Класс ты пишешь всего 1 раз, а использовать его можешь где угодно.
Ктому же пора уже отказаться от mysql и перейти на mysqli или pdo
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB