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

首頁 > 編程 > PHP > 正文

PHP數(shù)據(jù)庫驅(qū)動 連接數(shù)據(jù)不同方式學(xué)習(xí)筆記

2020-03-22 20:20:15
字體:
供稿:網(wǎng)友
  • 相關(guān)學(xué)習(xí)資料

    http://www.php.net/manual/zh/refs.database.phphttp://www.php.net/manual/zh/internals2.pdo.phphttp://bbs.phpchina.com/thread-184537-1-1.htmlhttp://www.metsky.com/archives/660.htmlhttp://www.phpbuilder.com/http://www.w3school.com.cn/php/php_db_odbc.asphttps://www.ibm.com/developerworks/cn/opensource/os-php-odbc/http://blog.csdn.net/deflag/article/details/743597http://www.informit.com/articles/article.aspx?p=31839&seqNum=3http://zh.wikipedia.org/wiki/Berkeley_DBhttp://blog.csdn.net/zuiaituantuan/article/details/5996376

    目錄

    1. PHP數(shù)據(jù)庫驅(qū)動簡介2. PHP連接數(shù)據(jù)庫的不同方式 

    1. PHP數(shù)據(jù)庫驅(qū)動簡介

    驅(qū)動是一段設(shè)計用來于一種特定類型的數(shù)據(jù)庫服務(wù)器進(jìn)行交互的軟件代碼。驅(qū)動可能會調(diào)用一些庫。類似于Java中的數(shù)據(jù)庫驅(qū)動的概念

    1. JDBC-ODPC橋:它將JDBC API映射到ODPC API。再讓JDBC-ODPC調(diào)用數(shù)據(jù)庫本地驅(qū)動代碼(也就是數(shù)據(jù)庫廠商提供的數(shù)據(jù)庫操作二進(jìn)制代碼庫,例如Oracle中的oci.dll)2. 本地API驅(qū)動直接將JDBC API映射成數(shù)據(jù)庫特定的客戶端API,即通過客戶端加載數(shù)據(jù)庫廠商提供的本地代碼庫(C/C++等) 3. 網(wǎng)絡(luò)協(xié)議驅(qū)動(主流)這種類型的驅(qū)動給客戶端提供了一個網(wǎng)絡(luò)API,客戶端上的JDBC驅(qū)動程序使用套接字(Socket)來調(diào)用服務(wù)器上的中間件程序,后者在將其請求轉(zhuǎn)化為所需的具體API調(diào)用。4. 本地協(xié)議驅(qū)動(主流)這種類型的驅(qū)動使用Socket,直接在客戶端和數(shù)據(jù)庫間通信。它是一種直接與數(shù)據(jù)庫實例交互的JDBC這種驅(qū)動是智能的,它知道數(shù)據(jù)庫使用的底層協(xié)議,也是目前最主流使用的JDBC驅(qū)動,我們本章的重點就是它

    而對于PHP來說,同樣主流使用的也是網(wǎng)絡(luò)協(xié)議驅(qū)動、本地協(xié)議驅(qū)動,即MySQL客戶端庫、MySQL Native驅(qū)動庫。 這些庫實現(xiàn)了用于和MySQL數(shù)據(jù)庫服務(wù)器進(jìn)行交互的底層協(xié)議。
    數(shù)據(jù)庫驅(qū)動位于PHP和數(shù)據(jù)庫進(jìn)行通信的最底層,不同的數(shù)據(jù)庫廠商都會在基于某個框架的前提下實現(xiàn)自己的驅(qū)動,用以提供基本功能、以及特定數(shù)據(jù)庫的高級功能。

    在驅(qū)動層之上是'連接器'、或者是適配器抽象層,用于PHP代碼和數(shù)據(jù)庫進(jìn)行連接,程序員可以使用PDO(PHP Database Object)、或者直接使用擴(kuò)展接口(mysql、mysqli)這些暴露出來的API與底層數(shù)據(jù)庫進(jìn)行通信。

    數(shù)據(jù)庫廠商提供的底層數(shù)據(jù)庫驅(qū)動

    mysql:  http://www.mysql.com/products/connector/oracle: http://www.oracle.com/technetwork/indexes/downloads/index.html#databasesqlserver: http://msdn.microsoft.com/zh-cn/library/cc296170(SQL.90).aspx ...

    文件型數(shù)據(jù)庫

    文件型是一種基于文件的數(shù)據(jù)庫引擎,而且使用文件I/O(輸入/輸出)函數(shù)來存儲和讀取來自磁盤上文件的數(shù)據(jù)庫。它普遍也比關(guān)系型數(shù)據(jù)庫(例如Mysql)小很多很多(例如典型的文件型數(shù)據(jù)庫SQLite命令行版本的大小小于200KB),同時,文件型數(shù)據(jù)庫而且支持你所熟悉的大部分SQL命令,同時具有易于攜帶的特點

    接下來,我們以上面這張大圖作為開始,逐一學(xué)習(xí)PHP連接數(shù)據(jù)庫的不同方式、以及它們在不同業(yè)務(wù)場景下的優(yōu)缺點

    2. PHP連接數(shù)據(jù)庫的不同方式

    0x1: 使用擴(kuò)展API接口與數(shù)據(jù)庫通信

    PHP代碼是由一個核心,一些可選擴(kuò)展組成了核心功能。PHP 的MySQL相關(guān)擴(kuò)展,比如mysqli,mysql都是基于PHP擴(kuò)展框架實現(xiàn)的。
    擴(kuò) 展一個典型的作用就是暴露一個API給PHP程序員,允許擴(kuò)展自己的功能可以被程序員使用。當(dāng)然,也有一部分基于PHP擴(kuò)展框架 開發(fā)的擴(kuò)展不會給PHP程序員暴露API接口。比如說PDO MySQL驅(qū)動擴(kuò)展,就沒有向PHP程序員暴露API接口,但是向它上層的PDO層提供了一個接口。

    關(guān)于PHP擴(kuò)展的編寫請參閱另一篇博文http://www.cnblogs.com/LittleHann/p/3562259.html

    在實際編程中,使用頻度最多的還是以擴(kuò)展API的方式去連接數(shù)據(jù)庫

    extension=php_mysql.dll

    這 是設(shè)計開發(fā)允許PHP應(yīng)用與MySQL數(shù)據(jù)庫交互的早期擴(kuò)展。mysql擴(kuò)展提供了一個面向過程的接口,并且是針對MySQL4.1.3或更早版本設(shè)計 的。因此,這個擴(kuò)展雖然可以與MySQL4.1.3或更新的數(shù)據(jù)庫服務(wù)端 進(jìn)行交互,但并不支持后期MySQL服務(wù)端提供的一些特性
    mysql擴(kuò)展的源代碼在PHP擴(kuò)展目錄ext/mysql下

    <?php    // 連接、選擇數(shù)據(jù)庫    $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password') or die('Could not connect: ' . mysql_error());    echo 'Connected successfully';    mysql_select_db('my_database') or die('Could not select database');    // 執(zhí)行 SQL 查詢    $query = 'SELECT * FROM my_table';    $result = mysql_query($query) or die('Query failed: ' . mysql_error());    // 以 HTML 打印查詢結(jié)果    echo '<table>';    while ($line = mysql_fetch_array($result, MYSQL_ASSOC))     {        echo '	<tr>';        foreach ($line as $col_value)         {            echo '		<td>$col_value</td>';        }        echo '	</tr>';    }    echo '</table>';    // 釋放結(jié)果集    mysql_free_result($result);    // 關(guān)閉連接    mysql_close($link);?>

    extension=php_mysqli.dll

    mysqli擴(kuò)展,我們有時稱之為MySQL增強(qiáng)擴(kuò)展,可以用于使用MySQL4.1.3或更新版本中新的高級特性。mysqli擴(kuò)展在PHP 5及以后版本中包含。
    mysqli擴(kuò)展有一系列的優(yōu)勢,相對于mysql擴(kuò)展的提升主要有:

    1. 面向?qū)ο?/u>接口2. prepared語句支持(即參數(shù)編譯預(yù)處理,可以有效防御SQL注入的發(fā)生)3. 多語句執(zhí)行支持4. 事務(wù)支持5. 增強(qiáng)的調(diào)試能力6. 嵌入式服務(wù)支持7. 在提供了面向?qū)ο蠼涌诘耐瑫r也提供了一個面向過程的接口。

    mysqli擴(kuò)展是使用PHP擴(kuò)展框架構(gòu)建的,它的源代碼在PHP源碼目錄下的ext/mysqli中

    <?php     $con = new mysqli('localhost', 'root', '111', 'php4fun_');    /* check connection */    if (mysqli_connect_errno())     {        printf('Connect failed: %s', mysqli_connect_error());        exit();    }    $sql = 'select name from users where name = ? and pass = ?';    $cmd = $con->prepare($sql);    $name = $_GET['name'];    $pass = $_GET['pass'];    //add parameters to sql query    $cmd->bind_param('ss', $name, $pass);    $cmd->execute();    $cmd->bind_result($result);    $cmd->fetch();    if($result)    {        var_dump($result);    }?>

    mysqli除了可以使用參數(shù)編譯預(yù)處理來進(jìn)行數(shù)據(jù)庫通信,同時也兼容使用面向過程的編碼方式

    <?php        /* Connect to a MySQL server  連接數(shù)據(jù)庫服務(wù)器 */       $link = mysqli_connect(                   'localhost',  /* The host to connect to 連接MySQL地址 */                   'root',      /* The user to connect as 連接MySQL用戶名 */                   '111',  /* The password to use 連接MySQL密碼 */                   'company');    /* The default database to query 連接數(shù)據(jù)庫名稱*/             if (!$link)     {           printf('Can't connect to MySQL Server. Errorcode: %s ', mysqli_connect_error());           exit;       }             /* Send a query to the server 向服務(wù)器發(fā)送查詢請求*/       if ($result = mysqli_query($link, 'SELECT * from p8_ad_user'))     {            print('Very large cities are: ');                 /* Fetch the results of the query 返回查詢的結(jié)果 */           while( $row = mysqli_fetch_assoc($result) )        {               printf('%s (%s) ', $row['Name'], $row['Population']);           }                 /* Destroy the result set and free the memory used for it 結(jié)束查詢釋放內(nèi)存 */           mysqli_free_result($result);       }             /* Close the connection 關(guān)閉連接*/       mysqli_close($link);   ?> 

    PHP還支持很多其他的數(shù)據(jù)庫連接擴(kuò)展,使用方法都類似,只要遵循函數(shù)調(diào)用規(guī)范即可,更多詳情請參閱

    http://www.php.net/manual/zh/refs.database.php

    0x2: 使用PDO抽象層與數(shù)據(jù)庫通信

    PDO(PHP 數(shù)據(jù)對象 PHP Database Object),是PHP應(yīng)用中的一個數(shù)據(jù)庫抽象層規(guī)范。PDO提供了一個統(tǒng)一的API接口可以使得你的PHP應(yīng)用不去關(guān)心具體要連接的數(shù)據(jù)庫服務(wù)器系統(tǒng) 類型。也就是說,如果你使用PDO的API,可以在任何需要的時候無縫切換數(shù)據(jù)庫服務(wù)器,比如從Firebird到MySQL,僅僅需要修改很少的PHP 代碼。
    其他數(shù)據(jù)庫抽象層的例子包括Java應(yīng)用中的JDBC以及Perl中的DBI。

    注意: 利用 PDO 擴(kuò)展自身并不能實現(xiàn)任何數(shù)據(jù)庫功能;必須使用一個具體數(shù)據(jù)庫的PDO驅(qū)動來訪問數(shù)據(jù)庫服務(wù)(它只是一個接口規(guī)范)

    但是反過來說,一個接口提供的兼容性越強(qiáng),它的定制性、特異性就相應(yīng)越弱(這很容易理解),PDO接口API的主要缺點是會限制讓你不能使用MySQL服務(wù)端提供所有的數(shù)據(jù)庫高級特性。比如,PDO不允許使用MySQL支持的多語句執(zhí)行。

    在PHP5中,PDO目前已經(jīng)支持大量數(shù)據(jù)庫,并且在PHP6中將作為默認(rèn)數(shù)據(jù)庫連接方式:

    1. sqlite2. mysql3. pgsql4. mssql ...

    PDO是基于PHP擴(kuò)展框架實現(xiàn)的,它的源碼在PHP源碼目錄的ext/pdo下

    再次強(qiáng)調(diào),PDO只是一個接口規(guī)范,它自身并不實現(xiàn)任何的數(shù)據(jù)庫功能,程序員必須使用一個具體數(shù)據(jù)庫的'PDO驅(qū)動'來訪問特定的數(shù)據(jù)庫

    extension=php_pdo_mysql.dll

    <?php    $dbhost='localhost';    $dbname='company';    $dbusr='root';    $dbpwd='111';    $dbhdl=NULL;    $dbstm=NULL;    $opt = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',);     $dsn='mysql:host=' . $dbhost . ';port=3306;dbname=' . $dbname;    try     {        $dbhdl = new PDO($dsn, $dbusr, $dbpwd, $opt);         //Display exception        $dbhdl->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);    }     catch (PDOExceptsddttrtion $e)     {        //return PDOException        print 'Error!: ' . $e->getMessage() . '<br>';        die();    }    $dbstm = $dbhdl->query('SELECT * from p8_ad_user LIMIT 0,1');    $rows = $dbstm->fetchAll(PDO::FETCH_ASSOC);//$rows = $dbhdl->Fetch();    print_r($rows);?>

    extension=php_pdo_pgsql.dll

    <?php    $host = 'localhost';    $user = 'root';    $pass = '111';    $db = 'company';     $cursor = 'cr_123456';    try    {        $dbh = new PDO('pgsql:host=$host;port=5432;dbname=$db;user=$user;password=$pass');        echo 'Connected<p>';    }    catch (Exception $e)    {        echo 'Unable to connect: ' . $e->getMessage() .'<p>';    }     $dbh->beginTransaction();    $query = 'SELECT * from p8_ad_user LIMIT 0,1';     $dbh->query($query);     $query = 'FETCH ALL IN '$cursor'';    echo 'begin data<p>';     foreach ($dbh->query($query) as $row)    {        echo '$row[0] $row[1] $row[2] <br>';    }      echo 'end data';?>

    這里只以Mysql、PostGreSQL為例,事實上,PDO這種抽象層方式可以訪問目前主流的大多數(shù)的數(shù)據(jù)庫,并且PDO將成為PHP6的默認(rèn)數(shù)據(jù)庫連接方式,更多詳情請參閱

    http://www.php.net/manual/zh/book.pdo.php

    0x3: 使用ODBC抽象層與數(shù)據(jù)庫通信

    ODBC是一種應(yīng)用程序編程接口(Application Programming Interface,API),使我們有能力連接到某個數(shù)據(jù)源(比如一個MS Access 數(shù)據(jù)庫)

    試圖通過編程語言和數(shù)據(jù)庫查詢訪問(SQL標(biāo)準(zhǔn)化)來標(biāo)準(zhǔn)化連接方法,比如功能和配置。
    ODBC的作用是充當(dāng)接口或連接器,它具有雙重設(shè)計目標(biāo):

    1. 首先,對于ODBC 系統(tǒng),它充當(dāng)?shù)氖蔷幊陶Z言系統(tǒng)2. 其次,對于數(shù)據(jù)存儲系統(tǒng),它充當(dāng)?shù)氖?ODBC 系統(tǒng)。

    所 以,ODBC 需要一個'對ODBC而言是編程語言'的驅(qū)動程序(例如PHP-ODBC庫)和一個'對數(shù)據(jù)存儲系統(tǒng)而言是ODBC'的驅(qū)動程序(比如 MySQL-ODBC庫)。除了ODBC系統(tǒng)本身之外,ODBC還可以處理數(shù)據(jù)源的配置,允許數(shù)據(jù)源和編程語言之間存在模糊性。
    和之前學(xué)習(xí)的擴(kuò)展API接口、PDO略有不同的是,使用ODBC連接數(shù)據(jù)庫要稍微麻煩一點(至少我個人這么覺得),這個'麻煩'體現(xiàn)在我們需要對目標(biāo)數(shù)據(jù)庫服務(wù)器的操作系統(tǒng)進(jìn)行一些配置,即創(chuàng)建ODBC數(shù)據(jù)源,然后才可以進(jìn)行ODBC連接
    創(chuàng)建到達(dá) MS Access 數(shù)據(jù)的 ODBC 連接的方法:

    1. 在控制面板中打開管理工具2. 雙擊其中的數(shù)據(jù)源 (ODBC)圖標(biāo)3. 選擇系統(tǒng) DSN 選項卡4. 點擊系統(tǒng) DSN 選項卡中的'添加'按鈕5. 選擇 Microsoft Access Driver。點擊完成6. 在下一個界面,點擊“選擇”來定位數(shù)據(jù)庫7. 為這個數(shù)據(jù)庫取一個數(shù)據(jù)源名 (DSN)8. 點擊確定

    code:

    <html><body> <?php    //連接一個ODBC數(shù)據(jù)源,無帳號、密碼    $conn = odbc_connect('northwind', '', '');    if (!$conn)    {        exit('Connection Failed: ' . $conn);    }    $sql = 'SELECT * FROM p8_ad_user';    $rs = odbc_exec($conn, $sql);    if (!$rs)    {        exit('Error in SQL');    }    echo '<table><tr>';    echo '<th>Companyname</th>';    echo '<th>Contactname</th></tr>';    while (odbc_fetch_row($rs))    {        $username = odbc_result($rs, 'username');        $password = odbc_result($rs, 'password');        echo '<tr><td>$username</td>';        echo '<td>$password</td></tr>';    }    odbc_close($conn);    echo '</table>';?></body></html>

    0x4: 使用DBX與數(shù)據(jù)庫通信

    PHP本身內(nèi)置了DBX函數(shù),DBX模塊是一個數(shù)據(jù)庫抽象層(DBX中的'X'就表示其所能支持的X種數(shù)據(jù)庫)。DBX函數(shù)允許你訪問所有DBX支持的數(shù)據(jù)庫。
    DBX支持下列數(shù)據(jù)庫:

    1. Mysql2. ODBC3. PgSQL4. Mssql(Microsoft SQL Server)5. Fbsql

    download:

    http://pecl.php.net/package/dbxhttp://rpmfind.net/linux/rpm2html/search.php?query=php-dbx

    code:

    <html><head>    <title>A PHP-DBX URL Organizer</title>    <style type=text/css>        p, ul, td, h3, h4, h3         {            font-family: verdana, helvetica, sans-serif;        }    </style></head><body><?/****** TABLE DEFINITION FOR THIS EXAMPLE:*    create table URLS (*    url VARCHAR(128) not null,*    description TEXT,*    primary key (url));*****///define $MODULE as DBX_MYSQL, DBX_MSSQL, DBX_PGSQL, or your supported database$MODULE = DBX_PGSQL;$server = 'localhost';$user = 'root';$password = '111';$database = 'company';/* FUNCTIONS */function get_urls($dbconn, $sql) {    $result = @dbx_query($dbconn, $sql);    if ( $result == 0 )     {        echo dbx_error($dbconn);    }     else     {        return $result;    }}function url($action, $dbconn, $url, $description) {    if($action == 'add')     {        $sql = 'insert into URLS values('$url', '$description')';    }    elseif($action == 'delete')     {        $url = urldecode($url);        $sql = 'delete from URLS where URL = '$url'';    }    $result = @dbx_query($dbconn, $sql);    if ( $result == 0 )     {        echo '<P>ERROR ADDING URL: ' . dbx_error($dbconn);    }     else     {        print('<p>$action : $url succeeded!<p>');    }}/*** MAIN ***/$dbconn = dbx_connect($MODULE, $server, $database, $user, $password) or die('CANNOT CONNECT TO DATABASE');?><h3>PHP DBX URL Organizer</h3><form action=dbx_urls.php method=post><p><b>Add a URL:</b><br>URL: <input type='text' name='url' maxlength='128' value='http://'> Description: <input type='text' name='description'> <input type='submit' name='addurl' value='Add URL!'></form><?    if(isset($addurl))     {        url('add', $dbconn, $url, $description);    }    if(isset($delete))     {        url('delete', $dbconn, $delete, '');    }    $sql = 'select * from URLS';    $result = get_urls($dbconn, $sql);    if(sizeof($result->data) == 0)     {?><h3>Sorry, there are no URLs in the database. You should add some.<?    }     else     {?><p><table border=1 cellpadding=5 cellspacing=0 width=600><tr><td><b>URL</b></td><td><b>Description</b></td><td>&nbsp;</td></tr><?    for($i = 0; $i < sizeof($result->data); $i++)     {?><tr><td><a href=<?=$result->data[$i]['url']?>><?=$result->data[$i]['url']?></a></td><td><?=$result->data[$i]['description']?></td><td width=1><a href=dbx_urls.php?delete=<?=urlencode($result->data[$i]['url'])?>>delete</a></tr><?    }?></table><?    }?></body></html>

    0x5: 使用DBA(Database (dbm-style) Abstraction Layer)與數(shù)據(jù)庫通信

    PHP的DBA抽象層是用來支持Berkeley DB這種文件型數(shù)據(jù)庫的。

    These functions build the foundation for accessing Berkeley DB style databases.

    在柏克萊的BSD系列操作系統(tǒng)中,有個簡單的數(shù)據(jù)庫結(jié)構(gòu),它以數(shù)個文件組成超小型的數(shù)據(jù)庫系統(tǒng),架構(gòu)成抽象層(abstraction layer)的DBA數(shù)據(jù)庫。
    目前PHP支持的DBA數(shù)據(jù)庫包括

    1. DBM: 柏克萊發(fā)展的最早期DBA數(shù)據(jù)庫http://en.wikipedia.org/wiki/Dbm2. NDBM: 較新且較有彈性的DBAhttp://en.wikipedia.org/wiki/NDBM3. GDBM: GNU 發(fā)展的DBAftp://ftp.gnu.org/pub/gnu/gdbm/4. DB2: 由Sleepycat軟件開發(fā)的DB2(非IBM的DB2)http://www.openldap.org/lists/openldap-software/199905/msg00009.html5. CDB: 這是qmail作者開發(fā)快速可靠的DBAhttp://pobox.com/~djb/cdb.html

    安裝好DBA后,使用如下代碼進(jìn)行連接

    <?php   $id = dba_open ( '/tmp/test.db' , 'n' , 'db2' );    if(! $id )     {           echo 'dba_open failedn' ;     exit;   }    dba_replace ( 'key' , 'This is an example!' , $id );   if( dba_exists ( 'key' , $id ))     {     echo dba_fetch ( 'key' , $id );     dba_delete ( 'key' , $id );   }   dba_close ( $id ); ?>

    3. 后記

    以上就是PHP連接數(shù)據(jù)庫的不同方式的學(xué)習(xí),通過本文的學(xué)習(xí),我們了解到一點

    目前PHP開發(fā)中主流使用的連接數(shù)據(jù)庫的技術(shù)是1. Mysql擴(kuò)展API2. Mysqli擴(kuò)展API3. PDO抽象層

    下一步希望做的事

    1. 研究一下PHP和mysql進(jìn)行交互的協(xié)議驅(qū)動的底層原理2. 嘗試編程簡單的通信協(xié)議驅(qū)動

    Copyright (c) 2014 LittleHann All rights reserved

    PHP編程

    鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

  • 發(fā)表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發(fā)表
    一区二区三区高清视频在线观看| 成人写真视频| 韩国一区二区在线播放| 久久91导航| 日韩av在线播| 青青草手机在线观看| 色综合av在线| 欧美午夜寂寞| 欧美精品久久一区| 中文字幕久热精品视频免费| 亚洲一区二区三区四区在线免费观看| 97精品国产97久久久久久免费| 末成年女av片一区二区下载| 丁香花在线影院观看在线播放| 国产日韩在线播放| 久久综合九色综合欧美狠狠| а√天堂资源地址在线下载| 中文字幕在线有码| 亚洲午夜性刺激影院| 久久av偷拍| 三上悠亚在线一区| 欧美性xxxxx极品视频| 亚洲黄色免费观看| 九色丨蝌蚪丨成人| 亚洲欧美日韩在线一区| 91在线视频免费看| 日韩在线导航| 日本一区精品久久久久影院| 国产在线传媒| 亚洲深夜视频| 日韩人妻精品无码一区二区三区| 色欲一区二区三区精品a片| 欧美精选一区二区三区| 在线观看爽视频| 欧美综合在线视频观看| 免费网站观看www在线观| 范冰冰一级做a爰片久久毛片| 精品人妻一区二区三区换脸明星| 男人天堂影院| 国产探花在线观看视频| 亚洲制服欧美中文字幕中文字幕| 漂亮人妻被中出中文字幕| 亚洲美女性囗交| 制服诱惑一区| 天天爽夜夜爽一区二区三区| 超碰在线人人| 天天干天天操天天爱| 白嫩亚洲一区二区三区| 国产在线观看18| 中国黄色在线视频| 欧美日韩一区二区在线免费观看| 在线免费看a| 全国男人的天堂网| 成人午夜国产| 欧美一级淫片videoshd| 日韩欧美在线中文字幕| 少妇熟女视频一区二区三区| 亚洲精品中文在线影院| 国产一区二区精品| av在线播放观看| 一区二区三区在线| 91丝袜美腿高跟国产极品老师| 麻豆高清免费国产一区| 欧美人与牲动交xxxxbbbb| 米奇精品一区二区三区在线观看| 久久综合久久综合久久综合| 日韩电视剧在线观看免费网站| 欧美在线影院| 国产超碰精品| 中国极品少妇xxxx| 亚洲美女淫视频| 久久国产尿小便嘘嘘| 爱爱爱视频网站| 亚洲av成人无码一二三在线观看| 日韩第二十一页| 免费日韩中文字幕| av黄色免费在线观看| 国产+成+人+亚洲欧洲自线| 欧洲精品乱码久久久久蜜桃| 91精品国产九九九久久久亚洲| 97精品国产97久久久久久久久久久久| 在线最新版中文在线| 亚洲黄色影院| 国产欧美精品一区二区三区介绍| аⅴ天堂中文在线网| 亚洲一级二级在线| 99精品国产在热久久下载| 91tv亚洲精品香蕉国产一区| 91精品国产综合久久久久久丝袜| 日韩专区欧美专区| 一区二区三区国产好的精华液| 欧美最猛性xxxxx亚洲精品| 亚洲精品电影网在线观看| 国产嫩草一区二区三区在线观看| 污污视频网站在线免费观看| 色婷婷av一区二区三区丝袜美腿| 中文字幕一区二区三区不卡在线| 日韩成人免费看| 久久影院朴妮唛| 国产精品日本精品| 日韩有码在线视频| 男女h黄动漫啪啪无遮挡软件| 多男操一女视频| 日韩高清av在线| 亚洲欧美综合在线观看| 婷婷开心久久网| 99国产精品久久久久99打野战| 男人的j进女人的j一区| 日本一区二区在线免费观看| 精品国精品国产自在久不卡| 偷拍国模大尺度视频在线播放| 91麻豆精品国产自产在线| 二区三区四区高清视频在线观看| 久久综合久久88| 99久久精品国产导航| 中文日韩在线观看| 97久久国产亚洲精品超碰热| 亚洲天堂网在线视频| 特级毛片在线观看| 国产卡二和卡三的视频| 欧美亚洲日本一区| 亚洲综合色区另类av| 欧美24videosex性欧美| 最近2019中文字幕在线高清| 亚洲av无码乱码国产精品久久| 日韩欧美自拍偷拍| 黄网页免费在线观看| 九色91av视频| 日日狠狠久久偷偷综合色| 撸视在线观看免费视频| 很黄很污的网站| 激情欧美一区二区三区中文字幕| 色婷婷中文字幕| 国产喷水福利在线视频| 欧美成人日本| 日韩无码精品一区二区三区| 国产porny蝌蚪视频| 日韩理论片在线| 亚洲色图 激情小说| 一区二区三区我不卡| 国产高潮免费视频| 亚洲精品国偷自产在线99热| 中国一级片在线观看| 天天综合网久久| 99视频在线观看免费| 国产天堂av在线| 91久久综合| 欧美性猛交xxxx乱大交丰满| 亚洲高清一区二区三区| 综合久久国产九一剧情麻豆| 18欧美乱大交| 18av在线视频| 国产区视频在线观看| 韩国精品久久久999| 国产一区国产二区国产三区| 久草在线视频网| 国产极品美女到高潮| 亚洲三区四区| 亚洲欧美偷拍另类| 欧美性xxxx| 欧美日本国产精品| 国产精品三级av在线播放| 米奇.777.com| 亚洲欧美国产日韩综合| 亚洲精品在线91| 欧美videos粗暴高清性| 午夜伦理在线视频| 缴情综合网五月天| 久久毛片高清国产| 色99之美女主播在线视频| 男插女视频网站| 99精品一区二区三区| 特大黑人巨人吊xxxx| 91在线丨porny丨国产| 97超碰免费观看| 欧美a视频在线观看| 精品久久久久久久久久久下田| 欧美三级一区二区三区| 色网站免费在线观看| 色影视在线观看| 日本午夜精品电影| 欧美色图久久| 欧美色图片区| 久久精品日产第一区二区| 91久久精品国产91性色69| 成人免费观看视频| 欧美韩国一区| 黄色xxxx| av黄色在线网站| www.日韩系列| 欧美国产视频一区| 黄色免费福利视频| 亚洲男女自偷自拍| 午夜伦理大片视频在线观看| 女人黄色免费在线观看| 一区二区国产在线| 久久久亚洲天堂| 99在线视频观看| 国内精品视频久久| 深夜宅男网站免费进入| 天堂资源最新版在线视频观看免费网| 性欧美长视频| 麻豆影视在线观看_| 翔田千里一区| 黄色动漫网站| www.亚洲人.com| 日韩在线a电影| 高清欧美性猛交xxxx黑人猛交| 精品国产91久久久久久老师| 欧美日韩美女在线| 免费精品视频| 亚洲免费在线视频一区 二区| 蜜臀在线免费观看| 91超碰这里只有精品国产| 国产十八熟妇av成人一区| 欧美日韩国产三区| 午夜视频一区二区| 国产成人精品综合在线观看| 欧美黄在线观看| 亚洲无av在线中文字幕| 欧洲亚洲一区二区| 中文字幕第五页| huan性巨大欧美| 在线不卡欧美精品一区二区三区| 日韩精品在线免费播放| 欧美精品久久一区| 二区三区在线视频| 国产福利免费视频| 性伦欧美刺激片在线观看| 老女人av在线| 国产亚洲激情| 国产精品久久毛片a| 在线亚洲欧美| 久久这里只有精品首页| 欧美国产三级| 欧美视频一区二区| 国产一区二区三区直播精品电影| 九色91蝌蚪| 亚洲一区二区天堂| 一区二区三区高清在线视频| 婷婷av在线| 啦啦啦中文高清在线视频| 最新日本视频| 日本成人超碰在线观看| 久热中文字幕| 1区2区3区在线| 国产亚洲欧美一区在线观看| 亚洲精品国产精品乱码不99按摩| 免费不卡亚洲欧美| 日本高清不卡一区二区三| 国产精品久久久久aaaa樱花| 国产精品久久久久国产精品日日| 激情综合色综合久久综合| 四虎4hu新地址入口2023| 青青草97国产精品免费观看无弹窗版| 免费观看日韩电影| 精品99在线| 国产精品suv一区二区三区| 国产麻豆天美果冻无码视频| 窝窝九色成人影院| 国产导航在线| 无码人妻一区二区三区一| 欧美高清视频看片在线观看| 91理论片午午论夜理片久久| 国产欧美中文在线| 欧美激情一级欧美精品| 日韩欧美网址| 久久这里只有| 亚洲国产尤物| 6080yy午夜一二三区久久| av无码精品一区二区三区宅噜噜| 欧美啪啪网站| 亚洲精品在线网站| 久久久久久影院| 欧亚一区二区三区| 亚洲成人免费观看| 亚洲一区二区自偷自拍| 中文字幕av亚洲精品一部二部| 亚洲精品在线视频播放| 第四色亚洲色图| 亚洲在线一区二区| 91大学生片黄在线观看| 亚洲激情电影在线| 久久久久久久精| 黄色成人在线| 国产在线视频网址| heisi视频网在线观看| 欧美**字幕| 色噜噜狠狠一区二区三区果冻| 中文字幕久热精品视频免费| 四季av在线一区二区三区| 蜜桃视频在线观看www| 亚洲精品videosex极品| 亚洲国产精品成人久久综合一区| 日韩午夜在线| 国产一区二区三区在线观看| 欧美日韩精品一区二区三区在线观看| 亚洲成人黄色在线观看| 国产精品扒开腿爽爽爽视频| 99re国产在线播放| 99视频超级精品| 卡一卡2卡三精品| 日本一区二区三区四区视频| 青草av.久久免费一区| 二人午夜免费观看在线视频| 亚洲熟女乱综合一区二区| 一级毛片视频在线| 欧美一区二区少妇| 六月亚洲精品一区| 精品人妻一区二区三区免费| 欧美sm极限捆绑bd| 久久久久久久国产视频| 天天操天天射天天爽| 疯狂蹂躏欧美一区二区精品| 一本色道久久综合亚洲精品酒店| 经典一区二区| 亚洲精品女人久久久| 精品人妻久久久久一区二区三区| 久久综合色播| 日本少妇xxxx动漫| av手机在线看| 欧美性xxxx极品高清hd直播| 久久久久久三级| 9a蜜桃久久久久久免费| 电影一区二区在线观看| 亚洲精品成人精品456| 日本三级2019| 亚洲精品欧美极品|