亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

php類實現MySQL數據庫備份、還原

2024-09-04 11:44:13
字體:
來源:轉載
供稿:網友

這是一個非常簡單的利用php來備份mysql數據庫的類文件,我們只要簡單的在dbmange中配置好連接地址用戶名與數據庫即可,下面我們一起來看這個例子,代碼如下:

  1. <?php   
  2. /**  
  3.  * 創建時間: 2012年5月21日  
  4.  *  
  5.  * 說明:分卷文件是以_v1.sql為結尾(20120522021241_all_v1.sql)  
  6.  * 功能:實現mysql數據庫分卷備份,選擇表進行備份,實現單個sql文件及分卷sql導入  
  7.  * 使用方法:  
  8.  *  
  9.  * ------1. 數據庫備份(導出)------------------------------------------------------------  
  10. //分別是主機,用戶名,密碼,數據庫名,數據庫編碼  
  11. $db = new DBManage ( 'localhost', 'root', 'root', 'test', 'utf8' );  
  12. // 參數:備份哪個表(可選),備份目錄(可選,默認為backup),分卷大小(可選,默認2000,即2M)  
  13. $db->backup ();  
  14.  * ------2. 數據庫恢復(導入)------------------------------------------------------------  
  15. //分別是主機,用戶名,密碼,數據庫名,數據庫編碼  
  16. $db = new DBManage ( 'localhost', 'root', 'root', 'test', 'utf8' );  
  17. //參數:sql文件  
  18. $db->restore ( './backup/20120516211738_all_v1.sql');  
  19.  *----------------------------------------------------------------------  
  20.  */  
  21. class DBManage   
  22. {   
  23.     var $db// 數據庫連接   
  24.     var $database// 所用數據庫   
  25.     var $sqldir// 數據庫備份文件夾   
  26.     var $record;   
  27.     // 換行符   
  28.     private $ds = "n";   
  29.     // 存儲SQL的變量   
  30.     public $sqlContent = "";   
  31.     // 每條sql語句的結尾符   
  32.     public $sqlEnd = ";";   
  33.     /**  
  34.      * 初始化  
  35.      *  
  36.      * @param string $host  
  37.      * @param string $username  
  38.      * @param string $password  
  39.      * @param string $thisatabase  
  40.      * @param string $charset  
  41.      */  
  42.     function __construct($host = 'localhost'$username = 'root'$password = ''$thisatabase = 'test'$charset = 'utf8')   
  43.     {   
  44.         $this->host = $host;   
  45.         $this->username = $username;   
  46.         $this->password = $password;   
  47.         $this->database = $thisatabase;   
  48.         $this->charset = $charset;   
  49.         // 連接數據庫   
  50.         $this->db = mysql_connect ( $this->host, $this->username, $this->password ) or die ( "數據庫連接失敗." );   
  51.         // 選擇使用哪個數據庫   
  52.         mysql_select_db ( $this->database, $this->db ) or die ( "無法打開數據庫" );   
  53.         // 數據庫編碼方式   
  54.         mysql_query ( 'SET NAMES ' . $this->charset, $this->db );   
  55.     }   
  56.     
  57.     /*  
  58.       * ------------------------------------------數據庫備份start----------------------------------------------------------  
  59.       */  
  60.     
  61.     /**  
  62.      * 數據庫備份  
  63.      * 參數:備份哪個表(可選),備份目錄(可選,默認為backup),分卷大小(可選,默認2000,即2M)  
  64.      *  
  65.      * @param $string $dir  
  66.      * @param int $size  
  67.      * @param $string $tablename  
  68.      */  
  69.     function backup($tablename = ''$dir = ''$size = 2000)   
  70.     {   
  71.         //$dir = $dir ? $dir : 'backup/';   
  72.         //$size = $size ? $size : 2000;   
  73.         $sql = '';   
  74.         // 只備份某個表   
  75.         if (! emptyempty ( $tablename ))   
  76.         {   
  77.             echo '正在備份表' . $tablename . '<br />';   
  78.             // 插入dump信息   
  79.             $sql = $this->_retrieve();   
  80.             // 插入表結構信息   
  81.             $sql .= $this->_insert_table_structure ( $tablename );   
  82.             // 插入數據   
  83.             $data = mysql_query ( "select * from " . $tablename );   
  84.             // 文件名前面部分   
  85.             $filename = date ( 'YmdHis' ) . "_" . $tablename;   
  86.             // 字段數量   
  87.             $num_fields = mysql_num_fields ( $data );   
  88.             // 第幾分卷   
  89.             $p = 1;   
  90.             // 循環每條記錄   
  91.             while ( $record = mysql_fetch_array ( $data ) )   
  92.             {   
  93.                 // 單條記錄   
  94.                 $sql .= $this->_insert_record ( $tablename$num_fields$record );   
  95.                 // 如果大于分卷大小,則寫入文件   
  96.                 if (strlen ( $sql ) >= $size * 1000)   
  97.                 {   
  98.                     $file = $filename . "_v" . $p . ".sql";   
  99.                     if ($this->_write_file ( $sql$file$dir ))   
  100.                     {   
  101.                         echo "表-" . $tablename . "-卷-" . $p . "-數據備份完成,生成備份文件 <span style='color:#f00;'>$dir$filename</span><br />";   
  102.                     }   
  103.                     else  
  104.                     {   
  105.                         echo "備份表-" . $tablename . "-失敗<br />";   
  106.                     }   
  107.                     // 下一個分卷   
  108.                     $p ++;   
  109.                     // 重置$sql變量為空,重新計算該變量大小   
  110.                     $sql = "";   
  111.                 }   
  112.             }   
  113.             // sql大小不夠分卷大小   
  114.             if ($sql != "")   
  115.             {   
  116.                 $filename .= "_v" . $p . ".sql";   
  117.                 if ($this->_write_file ( $sql$filename$dir ))   
  118.                 {   
  119.                     echo "表-" . $tablename . "-卷-" . $p . "-數據備份完成,生成備份文件 <span style='color:#f00;'>$dir$filename</span><br />";   
  120.                 }   
  121.                 else  
  122.                 {   
  123.                     echo "備份卷-" . $p . "-失敗<br />";   
  124.                 }   
  125.             }   
  126.         }   
  127.         else  
  128.         { // 備份全部表   
  129.             if ($tables = mysql_query ( "show table status from " . $this->database ))   
  130.             {   
  131.                 echo "讀取數據庫結構成功!<br />";   
  132.             }   
  133.             else  
  134.             {   
  135.                 exit ( "讀取數據庫結構成功!<br />" );   
  136.             }   
  137.             // 插入dump信息   
  138.             $sql .= $this->_retrieve();   
  139.             // 文件名前面部分   
  140.             $filename = date ( 'YmdHis' ) . "_all";   
  141.             // 查出所有表   
  142.             $tables = mysql_query ( 'SHOW TABLES' );   
  143.             // 第幾分卷   
  144.             $p = 1;   
  145.             // 循環所有表   
  146.             while ( $table = mysql_fetch_array ( $tables ) )   
  147.             {   
  148.                 // 獲取表名   
  149.                 $tablename = $table [0];   
  150.                 // 獲取表結構   
  151.                 $sql .= $this->_insert_table_structure ( $tablename );   
  152.                 $data = mysql_query ( "select * from " . $tablename );   
  153.                 $num_fields = mysql_num_fields ( $data );   
  154.     
  155.                 // 循環每條記錄   
  156.                 while ( $record = mysql_fetch_array ( $data ) )   
  157.                 {   
  158.                     // 單條記錄   
  159.                     $sql .= $this->_insert_record ( $tablename$num_fields$record );   
  160.                     // 如果大于分卷大小,則寫入文件   
  161.                     if (strlen ( $sql ) >= $size * 1000)   
  162.                     {   
  163.     
  164.                         $file = $filename . "_v" . $p . ".sql";   
  165.                         // 寫入文件   
  166.                         if ($this->_write_file ( $sql$file$dir ))   
  167.                         {   
  168.                             echo "-卷-" . $p . "-數據備份完成,生成備份文件<span style='color:#f00;'>$dir$file</span><br />";   
  169.                         }   
  170.                         else  
  171.                         {   
  172.                             echo "備份卷-" . $p . "-失敗<br />";   
  173.                         }   
  174.                         // 下一個分卷   
  175.                         $p ++;   
  176.                         // 重置$sql變量為空,重新計算該變量大小   
  177.                         $sql = "";   
  178.                     }   
  179.                 }   
  180.             }   
  181.             // sql大小不夠分卷大小   
  182.             if ($sql != "")   
  183.             {   
  184.                 $filename .= "_v" . $p . ".sql";   
  185.                 if ($this->_write_file ( $sql$filename$dir ))   
  186.                 {   
  187.                     echo "-卷-" . $p . "-數據備份完成,生成備份文件 <span style='color:#f00;'>$dir$filename<br />";   
  188.                 }   
  189.                 else  
  190.                 {   
  191.                     echo "備份卷-" . $p . "-失敗<br />";   
  192.                 }   
  193.             }   
  194.         }   
  195.     }   
  196.     
  197.     /**  
  198.      * 插入數據庫備份基礎信息  
  199.      *  
  200.      * @return string  
  201.      */  
  202.     private function _retrieve() {   
  203.         $value = '';   
  204.         $value .= '--' . $this->ds;   
  205.         $value .= '-- MySQL database dump' . $this->ds;   
  206.         $value .= '-- Created by DBManage class, Power By yanue. ' . $this->ds;   
  207.         $value .= '-- http://yanue.net ' . $this->ds;   
  208.         $value .= '--' . $this->ds;   
  209.         $value .= '-- 主機: ' . $this->host . $this->ds;   
  210.         $value .= '-- 生成日期: ' . date ( 'Y' ) . ' 年  ' . date ( 'm' ) . ' 月 ' . date ( 'd' ) . ' 日 ' . date ( 'H:i' ) . $this->ds;   
  211.         $value .= '-- MySQL版本: ' . mysql_get_server_info () . $this->ds;   
  212.         $value .= '-- PHP 版本: ' . phpversion () . $this->ds;   
  213.         $value .= $this->ds;   
  214.         $value .= '--' . $this->ds;   
  215.         $value .= '-- 數據庫: `' . $this->database . '`' . $this->ds;   
  216.         $value .= '--' . $this->ds . $this->ds;   
  217.         $value .= '-- -------------------------------------------------------';   
  218.         $value .= $this->ds . $this->ds;   
  219.         return $value;   
  220.     }   
  221.     
  222.     /**  
  223.      * 插入表結構  
  224.      *  
  225.      * @param unknown_type $table  
  226.      * @return string  
  227.      */  
  228.     private function _insert_table_structure($table) {   
  229.         $sql = '';   
  230.         $sql .= "--" . $this->ds;   
  231.         $sql .= "-- 表的結構" . $table . $this->ds;   
  232.         $sql .= "--" . $this->ds . $this->ds;   
  233.     
  234.         // 如果存在則刪除表   
  235.         $sql .= "DROP TABLE IF EXISTS `" . $table . '`' . $this->sqlEnd . $this->ds;   
  236.         // 獲取詳細表信息   
  237.         $res = mysql_query ( 'SHOW CREATE TABLE `' . $table . '`' );   
  238.         $row = mysql_fetch_array ( $res );   
  239.         $sql .= $row [1];   
  240.         $sql .= $this->sqlEnd . $this->ds;   
  241.         // 加上   
  242.         $sql .= $this->ds;   
  243.         $sql .= "--" . $this->ds;   
  244.         $sql .= "-- 轉存表中的數據 " . $table . $this->ds;   
  245.         $sql .= "--" . $this->ds;   
  246.         $sql .= $this->ds;   
  247.         return $sql;   
  248.     }   
  249.     
  250.     /**  
  251.      * 插入單條記錄  
  252.      *  
  253.      * @param string $table  
  254.      * @param int $num_fields  
  255.      * @param array $record  
  256.      * @return string  
  257.      */  
  258.     private function _insert_record($table$num_fields$record) {   
  259.         // sql字段逗號分割   
  260.         $insert = $comma = "";   
  261.         $insert .= "INSERT INTO `" . $table . "` VALUES(";   
  262.         // 循環每個子段下面的內容   
  263.         for($i = 0; $i < $num_fields$i ++) {   
  264.             $insert .= ($comma . "'" .mysql_real_escape_string ( $record [$i] ) . "'");   
  265.             $comma = ",";   
  266.         }   
  267.         $insert .= ");" . $this->ds;   
  268.         return $insert;   
  269.     }   
  270.     
  271.     /**  
  272.      * 寫入文件  
  273.      *  
  274.      * @param string $sql  
  275.      * @param string $filename  
  276.      * @param string $dir  
  277.      * @return boolean  
  278.      */  
  279.     private function _write_file($sql$filename$dir) {   
  280.         $dir = $dir ? $dir : './backup/';   
  281.         // 不存在文件夾則創建   
  282.         if (! file_exists ( $dir )) {   
  283.             mkdir ( $dir );   
  284.         }   
  285.         $re = true;   
  286.         if (! @$fp = fopen ( $dir . $filename"w+" )) {   
  287.             $re = false;   
  288.             echo "打開文件失?。?quot;;   
  289.         }   
  290.         if (! @fwrite ( $fp$sql )) {   
  291.             $re = false;   
  292.             echo "寫入文件失敗,請文件是否可寫";   
  293.         }   
  294.         if (! @fclose ( $fp )) {   
  295.             $re = false;   
  296.             echo "關閉文件失敗!";   
  297.         }   
  298.         return $re;   
  299.     }   
  300.     
  301.     /*  
  302.       *  
  303.       * -------------------------------上:數據庫導出-----------分割線----------下:數據庫導入--------------------------------  
  304.       */  
  305.     
  306.     /**  
  307.      * 導入備份數據  
  308.      * 說明:分卷文件格式20120516211738_all_v1.sql  
  309.      * 參數:文件路徑(必填)  
  310.      *  
  311.      * @param string $sqlfile  
  312.      */  
  313.     function restore($sqlfile)   
  314.     {   
  315.         // 檢測文件是否存在   
  316.         if (! file_exists ( $sqlfile ))   
  317.         {   
  318.             exit ( "文件不存在!請檢查" );   
  319.         }   
  320.         $this->lock ( $this->database );   
  321.         // 獲取數據庫存儲位置   
  322.         $sqlpath = pathinfo ( $sqlfile );   
  323.         $this->sqldir = $sqlpath ['dirname'];   
  324.         // 檢測是否包含分卷,將類似20120516211738_all_v1.sql從_v分開,有則說明有分卷   
  325.         $volume = explode ( "_v"$sqlfile );   
  326.         $volume_path = $volume [0];   
  327.         echo "請勿刷新及關閉瀏覽器以防止程序被中止,如有不慎!將導致數據庫結構受損<br />";   
  328.         echo "正在導入備份數據,請稍等!<br />";   
  329.         if (emptyempty ( $volume [1] ))   
  330.         {   
  331.             echo "正在導入sql:<span style='color:#f00;'>" . $sqlfile . '</span><br />';   
  332.             // 沒有分卷   
  333.             if ($this->_import ( $sqlfile )) {   
  334.                 echo "數據庫導入成功!";   
  335.             }   
  336.             else  
  337.             {   
  338.                 exit ( '數據庫導入失??!' );   
  339.             }   
  340.         }   
  341.         else  
  342.         {   
  343.             //$volume_id = array();   
  344.             // 存在分卷,則獲取當前是第幾分卷,循環執行余下分卷   
  345.             $volume_id = explode ( ".sq"$volume [1] );   
  346.             // 當前分卷為$volume_id   
  347.             $volume_id = intval ( $volume_id [0] );   
  348.             while ( $volume_id )   
  349.             {   
  350.                 $tmpfile = $volume_path . "_v" . $volume_id . ".sql";   
  351.                 // 存在其他分卷,繼續執行   
  352.                 if (file_exists ( $tmpfile )) {   
  353.                     // 執行導入方法   
  354.                     echo "正在導入分卷<span style='color:#f00;'>" . $tmpfile . '</span><br />';   
  355.                     if ($this->_import ( $tmpfile ))   
  356.                     {   
  357.     
  358.                     }   
  359.                     else  
  360.                     {   
  361.                         exit ( "導入分卷<span style='color:#f00;'>" . $tmpfile . '</span>失敗!可能是數據庫結構已損壞!請嘗試從分卷1開始導入' );   
  362.                     }   
  363.                 }   
  364.                 else  
  365.                 {   
  366.                     echo "此分卷備份全部導入成功!<br />";   
  367.                     return;   
  368.                 }   
  369.                 $volume_id++;   
  370.             }   
  371.         }   
  372.     }   
  373.     
  374.     /**  
  375.      * 將sql導入到數據庫(普通導入)  
  376.      *  
  377.      * @param string $sqlfile  
  378.      * @return boolean  
  379.      */  
  380.     private function _import($sqlfile) {   
  381.         // sql文件包含的sql語句數組   
  382.         $sqls = array ();   
  383.         $f = fopen ( $sqlfile"rb" );   
  384.         // 創建表緩沖變量   
  385.         $create = '';   
  386.         while ( ! feof ( $f ) ) {   
  387.             // 讀取每一行sql   
  388.             $line = fgets ( $f );   
  389.             // 如果包含'-- '等注釋,或為空白行,則跳過   
  390.             if (trim ( $line ) == '' || preg_match ( '/--*?/'$line$match )) {   
  391.                 continue;   
  392.             }   
  393.             // 如果結尾包含';'(即為一個完整的sql語句,這里是插入語句),并且不包含'ENGINE='(即創建表的最后一句),   
  394.             if (! preg_match ( '/;/'$line$match ) || preg_match ( '/ENGINE=/'$line$match )) {   
  395.                 // 將本次sql語句與創建表sql連接存起來   
  396.                 $create .= $line;   
  397.                 // 如果包含了創建表的最后一句   
  398.                 if (preg_match ( '/ENGINE=/'$create$match )) {   
  399.                     // 則將其合并到sql數組   
  400.                     $sqls [] = $create;   
  401.                     // 清空當前,準備下一個表的創建   
  402.                     $create = '';   
  403.                 }   
  404.                 // 跳過本次   
  405.                 continue;   
  406.             }   
  407.             $sqls [] = $line;   
  408.         }   
  409.         fclose ( $f );   
  410.         // 循環sql語句數組,分別執行   
  411.         foreach ( $sqls as $sql ) {   
  412.             str_replace ( "n"""$sql );   
  413.             if (! mysql_query ( trim ( $sql ) )) {   
  414.                 echo mysql_error ();   
  415.                 return false;   
  416.             }   
  417.         }   
  418.         return true;   
  419.     }   
  420.     
  421.     /*  
  422.       * -------------------------------數據庫導入end---------------------------------  
  423.       */  
  424.     
  425.     // 關閉數據庫連接   
  426.     private function close() {   
  427.         mysql_close ( $this->db );   
  428.     }   
  429.     
  430.     // 鎖定數據庫,以免備份或導入時出錯   
  431.     private function lock($tablename$op = "WRITE") {   
  432.         if (mysql_query ( "lock tables " . $tablename . " " . $op ))   
  433.             return true;   
  434.         else  
  435.             return false;   
  436.     }   
  437.     
  438.     // 解鎖   
  439.     private function unlock() {   
  440.         if (mysql_query ( "unlock tables" ))   
  441.             return true;   
  442.         else  
  443.             return false;   
  444.     }   
  445.     
  446.     // 析構   
  447.     function __destruct() {   
  448.         mysql_query ( "unlock tables"$this->db );   
  449.         mysql_close ( $this->db );   
  450.     }  //開源代碼Vevb.com 
  451.  
  452. $db = new DBManage ( 'localhost''root''''tao''gbk' );  
  453. //$db->backup ('tao_admin');   
  454. $db->restore ( './backup/20140228222713_tao_admin_v1.sql'); 
  455. ?> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品极品在线观看| 日韩欧美一区二区三区| 丁香五六月婷婷久久激情| 欧美精品在线看| 欧美不卡视频一区发布| 国产精品91在线观看| 国产啪精品视频| 久久九九全国免费精品观看| 欧美激情xxxxx| 欧美电影在线免费观看网站| 欧美大尺度电影在线观看| 青青草原成人在线视频| 国产精品第一第二| 亚洲电影免费在线观看| 亚洲在线免费视频| 亚洲国产婷婷香蕉久久久久久| 亚洲欧美一区二区三区情侣bbw| 精品亚洲一区二区三区在线观看| 久久影视三级福利片| 97成人精品区在线播放| 亚洲精品视频在线播放| 色偷偷av一区二区三区乱| 亚洲 日韩 国产第一| 欧美色图在线视频| 91sao在线观看国产| 91av在线精品| 久久久999精品免费| 成人女保姆的销魂服务| 九九久久久久久久久激情| 人人做人人澡人人爽欧美| 精品久久久久久久久久| 91精品久久久久久久久不口人| 琪琪亚洲精品午夜在线| 成人在线激情视频| 欧美在线视频播放| 日韩在线小视频| 狠狠躁夜夜躁人人爽天天天天97| 精品国产91乱高清在线观看| y97精品国产97久久久久久| 97精品久久久中文字幕免费| 国产在线999| 中文字幕日韩在线观看| 疯狂做受xxxx欧美肥白少妇| 日本一本a高清免费不卡| 欧美网站在线观看| 日韩在线免费av| 欧美孕妇与黑人孕交| 伊人久久男人天堂| 国产欧美精品一区二区三区介绍| 国产精品偷伦一区二区| 欧美色视频日本高清在线观看| 国产精品流白浆视频| 日韩视频欧美视频| 91精品国产乱码久久久久久蜜臀| 8090理伦午夜在线电影| 国产精品久久久久久久久男| 91免费观看网站| 国产成人亚洲综合91精品| 国产精品久久视频| 理论片在线不卡免费观看| 精品欧美一区二区三区| 日韩少妇与小伙激情| 欧美电影第一页| 神马久久久久久| 亚洲国产精品人人爽夜夜爽| 欧美成人激情图片网| 国产97免费视| 亚洲第一精品福利| 日韩在线视频中文字幕| 国产亚洲精品久久久久久牛牛| 日韩av影片在线观看| 久久久精品国产| 亚洲欧洲偷拍精品| 欧美视频第一页| 亚洲奶大毛多的老太婆| 亚洲欧洲一区二区三区在线观看| 国产一区二区三区在线播放免费观看| 亚洲自拍小视频| 九九精品视频在线| 丝袜亚洲欧美日韩综合| 青青青国产精品一区二区| 久久成人18免费网站| 中文字幕av一区| 久久伊人色综合| 久久久精品一区| 国产日韩在线免费| 亚洲丁香久久久| 国产精品女主播视频| 第一福利永久视频精品| 操人视频在线观看欧美| 欧美精品videosex牲欧美| 伊人久久五月天| 色综合久久天天综线观看| 8050国产精品久久久久久| 日产精品久久久一区二区福利| 久久久黄色av| 日韩小视频在线观看| 欧美成人免费网| 欧美激情图片区| 麻豆一区二区在线观看| 亚洲日本欧美日韩高观看| 国产精品视频1区| 日韩高清中文字幕| 欧美成人在线影院| 国产精品欧美激情在线播放| 九九热这里只有精品免费看| 亚洲精品720p| 国产精品一区电影| 亚洲一区二区三区成人在线视频精品| 久热精品视频在线观看一区| 亚洲女性裸体视频| 亚洲精品午夜精品| 精品久久久国产| 亚洲性日韩精品一区二区| 69久久夜色精品国产7777| 精品视频—区二区三区免费| 一区二区三区回区在观看免费视频| 欧美丝袜一区二区| 成人妇女淫片aaaa视频| 色一区av在线| 91色视频在线导航| 一区二区三区动漫| 国产精品久久97| 91在线免费视频| 亚洲自拍另类欧美丝袜| 国产成人精品免费视频| 国产精品色午夜在线观看| 国产精品极品尤物在线观看| 色婷婷综合成人av| 国产精品成人免费视频| 日韩天堂在线视频| 91国产中文字幕| 国产一区二区三区视频| 中文字幕亚洲无线码a| 亚洲综合av影视| 精品偷拍各种wc美女嘘嘘| 一区二区欧美亚洲| 亚洲电影免费观看高清完整版在线| 国模视频一区二区三区| 久久久久久久久91| 国产在线视频不卡| 欧美黑人xxxⅹ高潮交| 日韩中文字幕亚洲| 国产精品亚洲аv天堂网| 国产精品日韩久久久久| 欧美日韩另类在线| 精品亚洲va在线va天堂资源站| 成人黄色片网站| 亚洲欧美激情一区| 日韩免费av一区二区| 亚洲精品免费一区二区三区| 日韩成人中文电影| 国产欧美一区二区三区在线| 精品国产欧美一区二区五十路| 国产在线98福利播放视频| 911国产网站尤物在线观看| 乱亲女秽乱长久久久| 在线亚洲国产精品网| 欧美在线播放视频| 一本色道久久综合亚洲精品小说| 欧美激情在线播放| 日韩中文字幕久久| 91久久精品一区| 成人黄色av播放免费|