中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

php實現的mongodb操作類實例
來源:易賢網 閱讀:1947 次 日期:2015-04-07 14:35:21
溫馨提示:易賢網小編為您整理了“php實現的mongodb操作類實例”,方便廣大網友查閱!

本文實例講述了php實現的mongodb操作類。分享給大家供大家參考。具體如下:

<?php

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

class mongo_db {

private $config;

private $connection;

private $db;

private $connection_string;

private $host;

private $port;

private $user;

private $pass;

private $dbname;

private $persist;

private $persist_key;

private $selects = array();

private $wheres = array();

private $sorts = array();

private $limit = 999999;

private $offset = 0;

private $timeout = 200;

private $key = 0;

/**

*

* CONSTRUCTOR *

*

* Automatically check if the Mongo PECL extension has been

installed/enabled.

* Generate the connection string and establish a connection

to the MongoDB.

*/

public function __construct() {

if((IS_NOSQL != 1)){

return;

}

if (!class_exists('Mongo')) {

//$this->error("The MongoDB PECL extension has not been installed or enabled", 500);

}

$configs =wxcity_base::load_config("cache","mongo_db");

$num = count($configs['connect']);

$this->timeout = trim($configs['timeout']);

$keys = wxcity_base::load_config('double');

$this->key = $keys['mongo_db'];

$this->config = $configs['connect'][$this->key];

$status = $this->connect();

if($status == false)

{

for($i = 1; $i < $num; $i++)

{

$n = $this->key + $i;

$key = $n >= $num ? $n - $num : $n;

$this->config = $configs['connect'][$key];

$status = $this->connect();

if($status!=false)

{

$keys['mongo_db'] = $key ;

$this->key = $key;

$data = "<?php\nreturn ".var_export($keys, true).";\n?>";

file_put_contents(WHTY_PATH.'configs/double.php', $data, LOCK_EX);

break;

}

}

}

if($status==false)

{

die('mongoDB not connect');

}

}

function __destruct() {

if((IS_NOSQL != 1)){

return;

}

if($this->connection)

{

$this->connection->close();

}

}

/**

*

* CONNECT TO MONGODB *

*

* Establish a connection to MongoDB using

the connection string generated in

* the connection_string() method.

If 'mongo_persist_key' was set to true in the

* config file, establish a persistent connection.

We allow for only the 'persist'

* option to be set because we want to

establish a connection immediately.

*/

private function connect() {

$this->connection_string();

$options = array('connect'=>true,'timeout'=>$this->timeout);

try {

$this->connection = new Mongo($this->connection_string, $options);

$this->db = $this->connection->{$this->dbname};

return($this);

} catch (MongoConnectionException $e) {

return false;

}

}

/**

*

* BUILD CONNECTION STRING *

*

* Build the connection string from the config file.

*/

private function connection_string() {

$this->host = trim($this->config['hostname']);

$this->port = trim($this->config['port']);

$this->user = trim($this->config['username']);

$this->pass = trim($this->config['password']);

$this->dbname = trim($this->config['database']);

$this->persist = trim($this->config['autoconnect']);

$this->persist_key = trim($this->config['mongo_persist_key']);

$connection_string = "mongodb://";

if (emptyempty($this->host)) {

$this->error("The Host must be set to connect to MongoDB", 500);

} if (emptyempty($this->dbname)) {

$this->error("The Database must be set to connect to MongoDB", 500);

} if (!emptyempty($this->user) && !emptyempty($this->pass)) {

$connection_string .= "{$this->user}:{$this->pass}@";

} if (isset($this->port) && !emptyempty($this->port)) {

$connection_string .= "{$this->host}:{$this->port}";

} else {

$connection_string .= "{$this->host}";

} $this->connection_string = trim($connection_string);

}

/**

*

* Switch_db *

*

* Switch from default database to a different db

*/

public function switch_db($database = '') {

if (emptyempty($database)) {

$this->error("To switch MongoDB databases, a new database name must be specified", 500);

} $this->dbname = $database;

try {

$this->db = $this->connection->{$this->dbname};

return(TRUE);

} catch (Exception $e) {

$this->error("Unable to switch Mongo Databases: {$e->getMessage()}", 500);

}

}

/**

*

* SELECT FIELDS *

*

* Determine which fields to include OR which to

exclude during the query process.

* Currently, including and excluding at

the same time is not available, so the

* $includes array will take precedence over

the $excludes array.

If you want to

* only choose fields to exclude,

leave $includes an empty array().

*

* @usage: $this->mongo_db->select(array('foo', 'bar'))->get('foobar');

*/

public function select($includes = array(), $excludes = array()) {

if (!is_array($includes)) {

$includes = array();

}

if (!is_array($excludes)) {

$excludes = array();

}

if (!emptyempty($includes)) {

foreach ($includes as $col) {

$this->selects[$col] = 1;

}

} else {

foreach ($excludes as $col) {

$this->selects[$col] = 0;

}

} return($this);

}

/**

*

* WHERE PARAMETERS *

*

* Get the documents based on these

search parameters. The $wheres array should

* be an associative array with the field

as the key and the value as the search

* criteria. *

* @usage = $this->mongo_db->where(array('foo' => 'bar'))->get('foobar');

*/

public function where($wheres = array()) {

foreach ((array)$wheres as $wh => $val) {

$this->wheres[$wh] = $val;

} return($this);

}

/**

*

* WHERE_IN PARAMETERS *

*

* Get the documents where the value

of a $field is in a given $in array().

*

* @usage = $this->mongo_db->where_in('foo', array('bar', 'zoo', 'blah'))->get('foobar');

*/

public function where_in($field = "", $in = array()) {

$this->where_init($field);

$this->wheres[$field]['$in'] = $in;

return($this);

}

/**

*

* WHERE_NOT_IN PARAMETERS *

*

* Get the documents where the value of

a $field is not in a given $in array().

*

* @usage = $this->mongo_db->where_not_in('foo', array('bar', 'zoo', 'blah'))->get('foobar');

*/

public function where_not_in($field = "", $in = array()) {

$this->where_init($field);

$this->wheres[$field]['$nin'] = $in;

return($this);

}

/**

*

* WHERE GREATER THAN PARAMETERS *

*

* Get the documents where the value of

a $field is greater than $x

*

* @usage = $this->mongo_db->where_gt('foo', 20);

*/

public function where_gt($field = "", $x) {

$this->where_init($field);

$this->wheres[$field]['$gt'] = $x;

return($this);

}

/**

*

* WHERE GREATER THAN OR EQUAL TO PARAMETERS *

*

* Get the documents where the value of a $field is greater than or equal to $x

*

* @usage = $this->mongo_db->where_gte('foo', 20);

*/

public function where_gte($field = "", $x) {

$this->where_init($field);

$this->wheres[$field]['$gte'] = $x;

return($this);

}

/**

*

* WHERE LESS THAN PARAMETERS *

*

* Get the documents where the value of

a $field is less than $x

*

* @usage = $this->mongo_db->where_lt('foo', 20);

*/

public function where_lt($field = "", $x) {

$this->where_init($field);

$this->wheres[$field]['$lt'] = $x;

return($this);

}

/**

*

* WHERE LESS THAN OR EQUAL TO PARAMETERS *

*

* Get the documents where the value of

a $field is less than or equal to $x

*

* @usage = $this->mongo_db->where_lte('foo', 20);

*/

public function where_lte($field = "", $x) {

$this->where_init($field);

$this->wheres[$field]['$lte'] = $x;

return($this);

}

/**

*

* WHERE BETWEEN PARAMETERS *

*

* Get the documents where the value of

a $field is between $x and $y

*

* @usage = $this->mongo_db->where_between('foo', 20, 30);

*/

public function where_between($field = "", $x, $y) {

$this->where_init($field);

$this->wheres[$field]['$gte'] = $x;

$this->wheres[$field]['$lte'] = $y;

return($this);

}

/**

*

* WHERE BETWEEN AND NOT EQUAL TO PARAMETERS *

*

* Get the documents where the value of

a $field is between but not equal to $x and $y

*

* @usage = $this->mongo_db->where_between_ne('foo', 20, 30);

*/

public function where_between_ne($field = "", $x, $y) {

$this->where_init($field);

$this->wheres[$field]['$gt'] = $x;

$this->wheres[$field]['$lt'] = $y;

return($this);

}

/**

*

* WHERE NOT EQUAL TO PARAMETERS *

*

* Get the documents where the value of

a $field is not equal to $x

*

* @usage = $this->mongo_db->where_between('foo', 20, 30);

*/

public function where_ne($field = "", $x) {

$this->where_init($field);

$this->wheres[$field]['$ne'] = $x;

return($this);

}

/**

*

* WHERE OR *

*

* Get the documents where the value of

a $field is in one or more values

*

* @usage = $this->mongo_db->where_or('foo', array( 'foo', 'bar', 'blegh' );

*/

public function where_or($field = "", $values) {

$this->where_init($field);

$this->wheres[$field]['$or'] = $values;

return($this);

}

/**

*

* WHERE AND *

*

* Get the documents where the elements match

the specified values *

* @usage = $this->mongo_db->where_and( array ( 'foo' => 1, 'b' => 'someexample' );

*/

public function where_and($elements_values = array()) {

foreach ((array)$elements_values as $element => $val) {

$this->wheres[$element] = $val;

} return($this);

}

/**

*

* WHERE MOD *

*

* Get the documents where $field % $mod = $result *

* @usage = $this->mongo_db->where_mod( 'foo', 10, 1 );

*/

public function where_mod($field, $num, $result) {

$this->where_init($field);

$this->wheres[$field]['$mod'] = array($num, $result);

return($this);

}

/** * * Where size * * * Get the documents where the size of a field is in a given $size int * * @usage : $this->mongo_db->where_size('foo', 1)->get('foobar'); */

public function where_size($field = "", $size = "") {

$this->_where_init($field);

$this->wheres[$field]['$size'] = $size;

return ($this);

}

/**

*

* LIKE PARAMETERS *

*

* Get the documents where the (string) value of

a $field is like a value. The defaults

* allow for a case-insensitive search. *

* @param $flags

* Allows for the typical regular expression flags:

* i = case insensitive

* m = multiline

* x = can contain comments

* l = locale

* s = dotall, "." matches everything, including newlines

* u = match unicode

*

* @param $enable_start_wildcard

* If set to anything other than TRUE, a starting line character "^" will be prepended

* to the search value, representing only searching for a value at the start of

* a new line.

* * @param $enable_end_wildcard

* If set to anything other than TRUE, an ending line character "$" will be appended

* to the search value, representing only searching for a value at the end of

* a line.

*

* @usage = $this->mongo_db->like('foo', 'bar', 'im', FALSE, TRUE);

*/

public function like($field = "", $value = "", $flags = "i", $enable_start_wildcard = TRUE, $enable_end_wildcard = TRUE) {

$field = (string) trim($field);

$this->where_init($field);

$value = (string) trim($value);

$value = quotemeta($value);

if ($enable_start_wildcard !== TRUE) {

$value = "^" . $value;

} if ($enable_end_wildcard !== TRUE) {

$value .= "$";

} $regex = "/$value/$flags";

$this->wheres[$field] = new MongoRegex($regex);

return($this);

}

public function wheres($where){

$this->wheres = $where;

}

/**

*

* ORDER BY PARAMETERS *

*

* Sort the documents based on the parameters passed.

To set values to descending order,

* you must pass values of either -1, FALSE,

'desc', or 'DESC', else they will be

* set to 1 (ASC).

*

* @usage = $this->mongo_db->where_between('foo', 20, 30);

*/

public function order_by($fields = array()) {

if (!is_array($fields) || !count($fields)) return ;

foreach ($fields as $col => $val) {

if ($val == -1 || $val === FALSE || strtolower($val) == 'desc') {

$this->sorts[$col] = -1;

} else {

$this->sorts[$col] = 1;

}

} return($this);

}

/**

*

* LIMIT DOCUMENTS *

*

* Limit the result set to $x number of documents *

* @usage = $this->mongo_db->limit($x);

*/

public function limit($x = 99999) {

if ($x !== NULL && is_numeric($x) && $x >= 1) {

$this->limit = (int) $x;

} return($this);

}

/**

*

* OFFSET DOCUMENTS *

*

* Offset the result set to skip $x number of documents

*

* @usage = $this->mongo_db->offset($x);

*/

public function offset($x = 0) {

if ($x !== NULL && is_numeric($x) && $x >= 1) {

$this->offset = (int) $x;

} return($this);

}

/**

*

* GET_WHERE *

*

* Get the documents based upon the passed parameters *

* @usage = $this->mongo_db->get_where('foo', array('bar' => 'something'));

*/

public function get_where($collection = "", $where = array(), $limit = 99999, $orderby=array()) {

if (is_array($orderby) || !emptyempty($orderby)) {

$order_by = $this->order_by($order_by);

}

return($this->where($where)->limit($limit)->get($collection));

}

public function selectA($collection = "", $limit = 99999, $orderby=array()) {

if(intval($limit)<1){

$limit = 999999;

}

$order_by = $this->order_by($orderby);

$re = $this->limit($limit)->get($collection);

$this->clear();

return (array)$re;

}

public function listinfo($collection = "", $orderby=array(), $page=1, $pagesize=12) {

$page = max(intval($page), 1);

$offset = $pagesize * ($page - 1);

$pagesizes = $offset + $pagesize;

$this->offset($offset);

$order_by = $this->order_by($orderby);

$re = $this->limit($pagesize)->get($collection);

$this->limit(999999);

$count = $this->count($collection);

$this->pages = pages($count, $page, $pagesize);

return (array)$re;

}

/**

*

* GET *

*

* Get the documents based upon the passed parameters *

* @usage = $this->mongo_db->get('foo', array('bar' => 'something'));

*/

public function get($collection = "") {

if (emptyempty($collection)) {

$this->error("In order to retreive documents from MongoDB, a collection name must be passed", 500);

} $results = array();

$documents = $this->db->{$collection}->find($this->wheres, $this->selects)->limit((int) $this->limit)->skip((int) $this->offset)->sort($this->sorts);

$returns = array();

foreach ($documents as $doc): $returns[] = $doc;

endforeach;

return($returns);

}

public function getMy($collection = "") {

if (emptyempty($collection)) {

$this->error("In order to retreive documents from MongoDB, a collection name must be passed", 500);

} $results = array();

$documents = $this->db->{$collection}->find($this->wheres, $this->selects)->limit((int) $this->limit)->skip((int) $this->offset)->sort($this->sorts);

$returns = array();

foreach ($documents as $doc): $returns[] = $doc;

endforeach;

$this -> clear();

return($returns);

}

/**

*

* COUNT *

*

* Count the documents based upon the passed parameters *

* @usage = $this->mongo_db->get('foo');

*/

public function count($collection = "") {

if (emptyempty($collection)) {

$this->error("In order to retreive a count of documents from MongoDB, a collection name must be passed", 500);

} $count = $this->db->{$collection}->find($this->wheres)->limit((int) $this->limit)->skip((int) $this->offset)->count();

$this->clear();

return($count);

}

/**

*

* INSERT *

*

* Insert a new document into the passed collection *

* @usage = $this->mongo_db->insert('foo', $data = array());

*/

public function insert($collection = "", $data = array(), $name='ID') {

if (emptyempty($collection)) {

$this->error("No Mongo collection selected to insert into", 500);

} if (count($data) == 0 || !is_array($data)) {

$this->error("Nothing to insert into Mongo collection or insert is not an array", 500);

} try {

/**

wxcity_base::load_sys_class('whtysqs','',0);

$mongoseq_class = new whtysqs('creaseidsqs');

$re = $mongoseq_class->query("?name=" . $collection . "&opt=put&data=1");

**/

$re = put_sqs('list_mongo_creaseidsqs','1');

if(is_numeric($re)){

$re++;

$data[$name] = intval($re);

}else{

$data[$name] = intval(time());

//die('mongosqs error');

}

$this->db->{$collection}->insert($data, array('fsync' => TRUE));

$this->clear();

return $data[$name];

} catch (MongoCursorException $e) {

$this->error("Insert of data into MongoDB failed: {$e->getMessage()}", 500);

}

}

public function insertWithId($collection = "", $data = array()) {

if (emptyempty($collection)) {

$this->error("No Mongo collection selected to insert into", 500);

} if (count($data) == 0 || !is_array($data)) {

$this->error("Nothing to insert into Mongo collection or insert is not an array", 500);

} try {

$this->db->{$collection}->insert($data, array('fsync' => TRUE));

$this->clear();

return 1;

} catch (MongoCursorException $e) {

$this->error("Insert of data into MongoDB failed: {$e->getMessage()}", 500);

}

}

/**

*

* UPDATE *

*

* Update a document into the passed collection *

* @usage = $this->mongo_db->update('foo', $data = array());

*/

public function update($collection = "", $data = array()) {

if (emptyempty($collection)) {

$this->error("No Mongo collection selected to update", 500);

} if (count($data) == 0 || !is_array($data)) {

$this->error("Nothing to update in Mongo collection or update is not an array", 500);

} try {

$this->db->{$collection}->update($this->wheres, array('$set' => $data), array('fsync' => TRUE, 'multiple' => FALSE));

$this->clear();

return(TRUE);

} catch (MongoCursorException $e) {

$this->error("Update of data into MongoDB failed: {$e->getMessage()}", 500);

}

}

/**

*

* UPDATE_ALL *

*

* Insert a new document into the passed collection *

* @usage = $this->mongo_db->update_all('foo', $data = array());

*/

public function update_all($collection = "", $data = array()) {

if (emptyempty($collection)) {

$this->error("No Mongo collection selected to update", 500);

} if (count($data) == 0 || !is_array($data)) {

$this->error("Nothing to update in Mongo collection or update is not an array", 500);

} try {

$this->db->{$collection}->update($this->wheres, array('$set' => $data), array('fsync' => TRUE, 'multiple' => TRUE));

return(TRUE);

} catch (MongoCursorException $e) {

$this->error("Update of data into MongoDB failed: {$e->getMessage()}", 500);

}

}

/**

*

* DELETE *

*

* delete document from the passed collection based upon certain criteria *

* @usage = $this->mongo_db->delete('foo', $data = array());

*/

public function delete($collection = "") {

if (emptyempty($collection)) {

$this->error("No Mongo collection selected to delete from", 500);

} try {

$this->db->{$collection}->remove($this->wheres, array('fsync' => TRUE, 'justOne' => TRUE));

$this->clear();

return(TRUE);

} catch (MongoCursorException $e) {

$this->error("Delete of data into MongoDB failed: {$e->getMessage()}", 500);

}

}

/**

*

* DELETE_ALL *

*

* Delete all documents from the passed collection based upon certain criteria

*

* @usage = $this->mongo_db->delete_all('foo', $data = array());

*/

public function delete_all($collection = "") {

if (emptyempty($collection)) {

$this->error("No Mongo collection selected to delete from", 500);

} try {

$this->db->{$collection}->remove($this->wheres, array('fsync' => TRUE, 'justOne' => FALSE));

return(TRUE);

} catch (MongoCursorException $e) {

$this->error("Delete of data into MongoDB failed: {$e->getMessage()}", 500);

}

}

/**

*

* ADD_INDEX *

*

* Ensure an index of the keys in a collection with optional parameters.

To set values to descending order,

* you must pass values of either -1, FALSE, 'desc', or 'DESC', else they will be

* set to 1 (ASC). *

* @usage = $this->mongo_db->add_index($collection, array('first_name' => 'ASC', 'last_name' => -1), array('unique' => TRUE));

*/

public function add_index($collection = "", $keys = array(), $options = array()) {

if (emptyempty($collection)) {

$this->error("No Mongo collection specified to add index to", 500);

} if (emptyempty($keys) || !is_array($keys)) {

$this->error("Index could not be created to MongoDB Collection because no keys were specified", 500);

} foreach ($keys as $col => $val) {

if ($val == -1 || $val === FALSE || strtolower($val) == 'desc') {

$keys[$col] = -1;

} else {

$keys[$col] = 1;

}

} if ($this->db->{$collection}->ensureIndex($keys, $options) == TRUE) {

$this->clear();

return($this);

} else {

$this->error("An error occured when trying to add an index to MongoDB Collection", 500);

}

}

/**

*

* REMOVE_INDEX *

*

* Remove an index of the keys in a collection.

To set values to descending order,

* you must pass values of either -1, FALSE, 'desc', or 'DESC', else they will be

* set to 1 (ASC). *

* @usage = $this->mongo_db->remove_index($collection, array('first_name' => 'ASC', 'last_name' => -1));

*/

public function remove_index($collection = "", $keys = array()) {

if (emptyempty($collection)) {

$this->error("No Mongo collection specified to remove index from", 500);

} if (emptyempty($keys) || !is_array($keys)) {

$this->error("Index could not be removed from MongoDB Collection because no keys were specified", 500);

} if ($this->db->{$collection}->deleteIndex($keys, $options) == TRUE) {

$this->clear();

return($this);

} else {

$this->error("An error occured when trying to remove an index from MongoDB Collection", 500);

}

}

/**

*

* REMOVE_ALL_INDEXES *

*

* Remove all indexes from a collection. *

* @usage = $this->mongo_db->remove_all_index($collection);

*/

public function remove_all_indexes($collection = "") {

if (emptyempty($collection)) {

$this->error("No Mongo collection specified to remove all indexes from", 500);

} $this->db->{$collection}->deleteIndexes();

$this->clear();

return($this);

}

/**

*

* LIST_INDEXES *

*

* Lists all indexes in a collection. *

* @usage = $this->mongo_db->list_indexes($collection);

*/

public function list_indexes($collection = "") {

if (emptyempty($collection)) {

$this->error("No Mongo collection specified to remove all indexes from", 500);

} return($this->db->{$collection}->getIndexInfo());

}

/**

*

* DROP COLLECTION *

*

* Removes the specified collection from the database.

Be careful because this

* can have some very large issues in production!

*/

public function drop_collection($collection = "") {

if (emptyempty($collection)) {

$this->error("No Mongo collection specified to drop from database", 500);

} $this->db->{$collection}->drop();

return TRUE;

}

/**

*

* CLEAR *

*

* Resets the class variables to default settings

*/

private function clear() {

$this->selects = array();

$this->wheres = array();

$this->limit = NULL;

$this->offset = NULL;

$this->sorts = array();

}

/**

*

* WHERE INITIALIZER *

*

* Prepares parameters for insertion in $wheres array().

*/

private function where_init($param) {

if (!isset($this->wheres[$param])) {

$this->wheres[$param] = array();

}

}

public function error($str, $t) {

echo $str;

exit;

}

}

?>

更多信息請查看IT技術專欄

更多信息請查看網絡編程
易賢網手機網站地址:php實現的mongodb操作類實例
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
亚洲午夜精品福利| 在线观看日韩www视频免费 | 99精品福利视频| 国产亚洲精品久久久久婷婷瑜伽| 另类图片国产| 午夜在线不卡| 亚洲欧美日韩天堂| 久久婷婷麻豆| 一区二区三区欧美视频| 最新亚洲视频| 1000部国产精品成人观看| 国产日韩亚洲欧美综合| 国产精品美女黄网| 欧美丝袜一区二区三区| 欧美精品在线看| 欧美黄色日本| 伊甸园精品99久久久久久| 很黄很黄激情成人| 国产一区二区三区在线免费观看 | 伊人久久婷婷| 精品91在线| 亚洲欧洲三级电影| 日韩午夜av在线| 日韩天堂在线观看| 亚洲视频一区二区| 亚洲男人第一网站| 久久精品成人一区二区三区| 久久婷婷国产综合精品青草| 欧美xx69| 欧美日韩亚洲一区二区三区四区| 欧美午夜a级限制福利片| 国产精品看片资源| 国产欧美日韩在线| 一本色道久久综合亚洲精品不| 日韩视频在线播放| 亚洲欧美欧美一区二区三区| 久久精品国产精品亚洲综合 | 国产欧美1区2区3区| 狠久久av成人天堂| 伊人色综合久久天天五月婷| 亚洲国产精品一区二区www在线| 亚洲二区在线视频| 在线视频欧美精品| 久久精品盗摄| 欧美理论在线| 国产欧美日韩精品一区| 亚洲高清毛片| 亚洲视频播放| 久久福利电影| 欧美日韩国产成人| 国产欧美一区二区精品性色| 在线观看欧美一区| 亚洲图片欧美日产| 久久久一二三| 欧美亚洲第一区| 亚洲电影免费| 亚洲综合色网站| 性做久久久久久免费观看欧美| 久久午夜电影网| 国产精品亚洲综合天堂夜夜 | 一本色道久久| 久久久美女艺术照精彩视频福利播放| 欧美精品免费播放| 国产欧美一区二区精品性| 亚洲人成久久| 久久夜色精品国产欧美乱| 国产精品美女| 日韩一区二区精品| 麻豆成人小视频| 国产主播一区二区| 亚洲欧美久久| 欧美性jizz18性欧美| 亚洲国产精品久久久久| 欧美一区激情| 国产精品区一区二区三| 一片黄亚洲嫩模| 欧美顶级少妇做爰| 久久成人一区二区| 欧美日韩亚洲一区二区三区四区| 韩国精品主播一区二区在线观看| 亚洲视频电影图片偷拍一区| 国产精品久久久久久久7电影| 新67194成人永久网站| 一区二区三区高清在线| 国产乱码精品| 美女在线一区二区| 久久欧美中文字幕| 亚洲在线观看免费| 国产精品99久久不卡二区| 在线成人国产| 国产精品久久午夜| 国产精品性做久久久久久| 欧美在线视频日韩| 国产精品中文字幕在线观看| 亚洲深夜影院| 欧美日韩在线不卡一区| 一本久道久久综合中文字幕| 久久综合狠狠| 免播放器亚洲| 美腿丝袜亚洲色图| 欧美怡红院视频| 欧美一区免费视频| 免费日韩视频| 欧美日韩国产高清视频| 欧美一区二区免费| 久久久亚洲精品一区二区三区 | 欧美成人首页| 欧美一级大片在线观看| 欧美一区二区三区四区视频| 欧美在线高清视频| 欧美日韩中文字幕日韩欧美| 国产精品yjizz| 久久精品国产免费观看| 狠狠爱成人网| 欧美一级专区免费大片| 欧美一区二区三区啪啪| 99国产一区二区三精品乱码| 久久精品人人| 久久久国产一区二区三区| 免费观看国产成人| 国产一区久久| 国产精品久久久久影院色老大| 欧美—级在线免费片| 欧美成人午夜激情视频| 日韩视频三区| 国产精品视频一| 久久精品99| 亚洲美女在线观看| 国产精品热久久久久夜色精品三区| 久久狠狠亚洲综合| 亚洲黄页一区| 国产精品一区二区三区免费观看| 免费欧美日韩| 亚洲精品美女久久7777777| 亚洲午夜精品视频| 欧美第一黄色网| 国产一区二区久久| 在线欧美小视频| 久久激情视频久久| 国产精品久久久久久户外露出| 国产日韩欧美精品在线| 99热在这里有精品免费| 欧美精品在线一区二区| 欧美激情亚洲综合一区| 欧美一区激情视频在线观看| 亚洲欧洲精品天堂一级| 国产精品一区久久久久| 欧美美女福利视频| 久久婷婷影院| 午夜宅男欧美| 99精品视频一区| 悠悠资源网久久精品| 国产精品xxxav免费视频| 欧美成人三级在线| 欧美在线视频播放| 亚洲视频网站在线观看| 亚洲电影激情视频网站| 久久精品亚洲热| 亚洲影院在线| 一区二区激情小说| 欧美日韩一二区| 欧美激情影音先锋| 久久综合久久综合久久| 欧美怡红院视频| 亚洲午夜久久久久久久久电影院| 亚洲人体偷拍| 91久久夜色精品国产网站| 黄色综合网站| 红桃视频成人| 韩国一区二区三区美女美女秀| 国产目拍亚洲精品99久久精品| 欧美日韩中文字幕精品| 欧美精品乱码久久久久久按摩| 欧美gay视频| 久久亚洲春色中文字幕| 久久成人18免费观看| 久久www成人_看片免费不卡| 小黄鸭精品aⅴ导航网站入口| 亚洲男人第一av网站| 亚洲欧美文学| 欧美一级淫片aaaaaaa视频| 先锋影音久久久| 欧美一区高清| 久久精品首页| 蜜臀av一级做a爰片久久| 麻豆精品网站| 欧美精品福利在线| 欧美日韩在线视频一区二区| 精品av久久707| 国语自产在线不卡| 亚洲高清在线视频| 亚洲精品中文在线| 99国产精品私拍| 久久夜色精品国产| 久久精品免费电影| 美女精品在线观看| 噜噜噜躁狠狠躁狠狠精品视频| 尤物网精品视频| 日韩视频中文| 亚洲综合色噜噜狠狠|