php操作mysqli(示例代码)


Posted in PHP onOctober 28, 2013

<?php
define("MYSQL_OPEN_LOGS",true);
class mysqliHelp
{

    private $db;

    public function __construct()
   {
    //如果要查询日志log的话,怎么办

   }

    public function __get($name )
    {
      //echo "__GET:",$name;
      if(in_array($name,array("db"),true))//或者isset($this->$name)
      return $this->$name;
      return null;

    }
    public function connect($host,$user,$pass,$db,$charSet='utf8',$force=false)
    {

        if($this->db && ($this->db instanceof mysqli) && !$force)
        {
            return ;
        }       
        $this->db=new mysqli($host,$user,$pass,$db);
        if (mysqli_connect_error()) {
        die('Connect Error (' . mysqli_connect_errno() . ') '
                . mysqli_connect_error());
        }
        $this->db->set_charset($charSet);

  

    }

     

   
     //$dbname string
     //返回值 如果成功则返回 TRUE,失败则返回 FALSE。
    function select_db ($dbname )
    {
        return $this->db->select_db($dbname); 
    }

    //$query mysqli_result 
    //$resulttype int  MYSQLI_ASSOC, MYSQLI_NUM, or MYSQLI_BOTH. Defaults to MYSQLI_BOTH.
    //返回值 Returns an array of strings that corresponds to the fetched row or NULL if there are no more rows in resultset.   
    function fetch_array(/*mysqli_result*/ $query, $resulttype = MYSQLI_ASSOC) 
    {
        //var_dump(!null);
        if(!$query || !($query instanceof mysqli_result))
        return NULL;
        return $query->fetch_array($resulttype);// 
    }

    function data_seek($result,$offset)
    {

       return $result->data_seek($offset);

    }

     

    function fetch_assoc($query) 
    {

        return $query->fetch_assoc();// 关联数组
    }

    function fetch_row($query) 
    {
        return $query->fetch_row();// 索引数组,数字0,1。eg。。。
    }

    function fetch_fields($query)
    {
         return $query->fetch_fields();
    }

  //$query string
  //$resultmode int
  //返回值 如果成功则返回 TRUE,失败则返回 FALSE。 For SELECT, SHOW, DESCRIBE or EXPLAIN mysqli_query() will return a result object. 
    public function query($sql ,$resultmode=MYSQLI_STORE_RESULT  )
    {
        if(MYSQL_OPEN_LOGS) {

            $sqlstarttime = $sqlendttime = 0;

            $mtime = explode(' ', microtime());
            $sqlstarttime = $mtime[1]+ $mtime[0] ;

  
        }

        //真正查询
        $query=$this->db->query($sql,$resultmode);

        if(MYSQL_OPEN_LOGS) {
                       // sleep(1);
            $mtime = explode(' ', microtime());
            $sqlendttime =  $mtime[1] + $mtime[0]  ;
            $sqlQueryTime = number_format($sqlendttime - $sqlstarttime,6);
            //dblogs($sql, $sqlQueryTime,1);
            $explain = array();
            $info = $this->db->info;
            if($query && preg_match("/^(select )/i", $sql)) {
                $explain = $this->fetch_array($this->db->query('EXPLAIN '.$sql), MYSQLI_ASSOC );
            }
            $GLOBALS['mysql_debug_query'][] = array('sql'=>$sql, 'time'=>$sqlQueryTime, 'info'=>$info, 'explain'=>$explain);
        }       

          
        if(!$query)
        {
          $this->halt('MySQL Query Error', $sql);
        }

         
        return $query;

    }

    //返回值 mysqli_stmt对象
    function prepare($sql)
    {
      return $this->db->prepare($sql);

    }

    function affected_rows() {

         
        return  $this->db->affected_rows;
    }
    function  error() 
    {
        return  $this->db->error;

    }
    function errno()
    {
        return  $this->db->errno;
    }
    //result 没有

    function num_rows($query)
    {
        return $query->num_rows;

    }

    //返回值 int  The number of fields from a result set. 
    //也可以用另外一种方式  mysqliHelp->db->field_count返回。
    function num_fields($query)
    {
        return  $query->field_count;
    }

    function free_result($query)
    {
        //all methods are equivalent;
        $query->free();
        //$query->free_result();
        //$query->close();
    }

    function insert_id() 
    {

         if(($id = $this->db->insert_id)>= 0)
         {

            return $id;
         }else
         {
            $idArr=$this->fetch_array($this->query("SELECT last_insert_id() as id"));
            return  intval($idArr[0]);
         }

         
        //return ($idArr=$this->fetch_array($this->query("SELECT last_insert_id() as id")))[0]
        //return ($id = $this->db-insert_id)>= 0 ? $id : 0 ;
    }

    function close() {

        return $this->db->close();
    }

     
    function halt($message,$sql)
    {
        $dberror = $this->error();
        $dberrno = $this->errno();
        $help_link = "http://faq.comsenz.com/?type=mysql&dberrno=".rawurlencode($dberrno)."&dberror=".rawurlencode($dberror);
        echo "<div style=\"position:absolute;font-size:11px;font-family:verdana,arial;background:#EBEBEB;padding:0.5em;\">
                <b>MySQL Error</b><br>
                <b>Message</b>: $message<br>
                <b>SQL</b>: $sql<br>
                <b>Error</b>: $dberror<br>
                <b>Errno.</b>: $dberrno<br>
                <a href=\"$help_link\" target=\"_blank\">Click here to seek help.</a>
                </div>";
        exit();
    }

    function __destruct() 
    {

         
       $this->db=null;

    }

             
    /*  MySQLi类
        面向对象接口  面向过程接口  别名  描述
        属性
        $mysqli->affected_rows   mysqli_affected_rows()  N/A 获取前一个Mysql操作的受影响行数
        $mysqli->client_info mysqli_get_client_info()    N/A 返回字符串类型的Mysql客户端版本信息
        $mysqli->client_version  mysqli_get_client_version() N/A 返回整型的Mysql客户端版本信息
        $mysqli->connect_errno   mysqli_connect_errno()  N/A 返回最后一次连接调用的错误代码
        $mysqli->connect_error   mysqli_connect_error()  N/A 返回一个字符串描述的最后一次连接调用的错误代码
        $mysqli->errno   mysqli_errno()  N/A 返回最近的函数调用产生的错误代码
        $mysqli->error   mysqli_error()  N/A 返回字符串描述的最近一次函数调用产生的错误代码
        $mysqli->field_count mysqli_field_count()    N/A 返回最近一次查询获取到的列的数目
        $mysqli->host_info   mysqli_get_host_info()  N/A 返回一个能够代表使用的连接类型的字符串
        $mysqli->protocol_version    mysqli_get_proto_info() N/A 返回使用的Mysql协议的版本信息
        $mysqli->server_info mysqli_get_server_info()    N/A 返回Mysql服务端版本的信息
        $mysqli->server_version  mysqli_get_server_version() N/A 返回整型的Mysql服务端版本信息
        $mysqli->info    mysqli_info()   N/A 最近一次执行的查询的检索信息
        $mysqli->insert_id   mysqli_insert_id()  N/A 返回最后一次查询自动生成并使用的id
        $mysqli->sqlstate    mysqli_sqlstate()   N/A 返回前一个Mysql操作的SQLSTATE错误
        $mysqli->warning_count   mysqli_warning_count()  N/A 返回给定链接最后一次查询的警告数量
        方法
        mysqli->autocommit() mysqli_autocommit() N/A 打开或关闭数据库的自动提交功能
        mysqli->change_user()    mysqli_change_user()    N/A 更改指定数据库连接的用户
        mysqli->character_set_name(), mysqli->client_encoding mysqli_character_set_name() mysqli_client_encoding()    返回数据库连接的默认字符集
        mysqli->close()  mysqli_close()  N/A 关闭先前打开的数据库连接
        mysqli->commit() mysqli_commit() N/A 提交当前事务
        mysqli::__construct()   mysqli_connect()    N/A 打开一个到Mysql服务端的新的连接[注意:静态方法]
        mysqli->debug()  mysqli_debug()  N/A 执行调试操作
        mysqli->dump_debug_info()    mysqli_dump_debug_info()    N/A 将调试信息转储到日志中
        mysqli->get_charset()    mysqli_get_charset()    N/A 返回对象的字符集
        mysqli->get_connection_stats()   mysqli_get_connection_stats()   N/A 返回客户端连接的统计信息。 仅可用于 mysqlnd。
        mysqli->get_client_info()    mysqli_get_client_info()    N/A 返回字符串描述的Mysql客户端版本
        mysqli->get_client_stats()   mysqli_get_client_stats()   N/A 返回每个客户端进程的统计信息。 仅可用于 mysqlnd。
        mysqli->get_cache_stats()    mysqli_get_cache_stats()    N/A 返回客户端的zval缓存统计信息。 仅可用于 mysqlnd。
        mysqli->get_server_info()    mysqli_get_server_info()    N/A 没有文档
        mysqli->get_warnings()   mysqli_get_warnings()   N/A 没有文档
        mysqli::init()  mysqli_init()   N/A 初始化mysqli并且返回一个由mysqli_real_connect使用的资源类型。[不是在对象上,是它返回的$mysqli对象]
        mysqli->kill()   mysqli_kill()   N/A 请求服务器杀死一个Mysql线程
        mysqli->more_results()   mysqli_more_results()   N/A 检查一个多语句查询是否还有其他查询结果集
        mysqli->multi_query()    mysqli_multi_query()    N/A 在数据库上执行一个多语句查询
        mysqli->next_result()    mysqli_next_result()    N/A 从multi_query中准备下一个结果集
        mysqli->options()    mysqli_options()    mysqli_set_opt()    设置选项
        mysqli->ping()   mysqli_ping()   N/A ping一个服务器连接,或者如果那个连接断了尝试重连
        mysqli->prepare()    mysqli_prepare()    N/A 准备一个用于执行的SQL语句
        mysqli->query()  mysqli_query()  N/A 在数据库上执行一个查询
        mysqli->real_connect()   mysqli_real_connect()   N/A 打开一个到Mysql服务端的连接
        mysqli->real_escape_string(), mysqli->escape_string() mysqli_real_escape_string() mysqli_escape_string()  转义字符串中用于SQL语句中的特殊字符,这个转换会考虑连接的当前字符集。
        mysqli->real_query() mysqli_real_query() N/A 执行一个SQL查询
        mysqli->rollback()   mysqli_rollback()   N/A 回滚当前事务
        mysqli->select_db()  mysqli_select_db()  N/A 为数据库查询选择默认数据库
        mysqli->set_charset()    mysqli_set_charset()    N/A 设置默认的客户端字符集
        mysqli->set_local_infile_default()   mysqli_set_local_infile_default()   N/A 清除用户为load data local infile命令定义的处理程序
        mysqli->set_local_infile_handler()   mysqli_set_local_infile_handler()   N/A 设置LOAD DATA LOCAL INFILE命令执行的回调函数
        mysqli->ssl_set()    mysqli_ssl_set()    N/A 使用SSL建立安装连接
        mysqli->stat()   mysqli_stat()   N/A 获取当前系统状态
        mysqli->stmt_init()  mysqli_stmt_init()  N/A 初始化一个语句并且返回一个mysqli_stmt_prepare使用的对象
        mysqli->store_result()   mysqli_store_result()   N/A 传输最后一个查询的结果集
        mysqli->thread_id()  mysqli_thread_id()  N/A 返回当前连接的线程ID
        mysqli->thread_safe()    mysqli_thread_safe()    N/A 返回是否设定了线程安全
        mysqli->use_result() mysqli_use_result() N/A 初始化一个结果集的取回
    */

    /*
            MySQL_STMT
        面向对象接口  过程化接口   别名(不要使用)    描述
        属性
        $mysqli_stmt->affected_rows  mysqli_stmt_affected_rows() N/A 返回最后一条倍执行的语句改变,删除或插入的总行数
        $mysqli_stmt->errno  mysqli_stmt_errno() N/A 返回最近一次语句调用的错误代码
        $mysqli_stmt->error  mysqli_stmt_error() N/A 返回最后一条语句错误的字符串描述
        $mysqli_stmt->field_count    mysqli_stmt_field_count()   N/A 返回给定语句得到的字段数量
        $mysqli_stmt->insert_id  mysqli_stmt_insert_id() N/A 获取前一个INSERT操作生成的ID
        $mysqli_stmt->num_rows   mysqli_stmt_num_rows()  N/A 返回语句结果集中的行数
        $mysqli_stmt->param_count    mysqli_stmt_param_count()   mysqli_param_count()    返回给定语句中参数数量
        $mysqli_stmt->sqlstate   mysqli_stmt_sqlstate()  N/A 返回前一个语句操作的SQLSTATE错误代码
        方法
        mysqli_stmt->attr_get()  mysqli_stmt_attr_get()  N/A 用于获取语句属性的当前值
        mysqli_stmt->attr_set()  mysqli_stmt_attr_set()  N/A 用于修改prepared语句的行为
        mysqli_stmt->bind_param()    mysqli_stmt_bind_param()    mysqli_bind_param() 将一个变量作为参数绑定到prepared语句上
        mysqli_stmt->bind_result()   mysqli_stmt_bind_result()   mysqli_bind_result()    将一个变量绑定到一个prepared语句上用于结果存储
        mysqli_stmt->close() mysqli_stmt_close() N/A 关闭一个prepared语句
        mysqli_stmt->data_seek() mysqli_stmt_data_seek() N/A 查看语句结果集中的任意行
        mysqli_stmt->execute()   mysqli_stmt_execute()   mysqli_execute()    执行一个prepared查询
        mysqli_stmt->fetch() mysqli_stmt_fetch() mysqli_fetch()  从一个prepared语句中抓取结果到限定变量中
        mysqli_stmt->free_result()   mysqli_stmt_free_result()   N/A 释放给定语句处理存储的结果集所占内存
        $mysqli_stmt->get_result()   mysqli_stmt_get_result  N/A 没有文档 仅可用于 mysqlnd。
        mysqli_stmt->get_warnings()  mysqli_stmt_get_warnings()  N/A 没有文档
        $mysqli_stmt->more_results() mysqli_stmt_more_results()  N/A 没有文档 仅可用于 mysqlnd。
        $mysqli_stmt->next_result()  mysqli_stmt_next_result()   N/A 没有文档 仅可用于 mysqlnd。
        mysqli_stmt->num_rows()  mysqli_stmt_num_rows()  N/A 查阅属性$mysqli_stmt->num_rows
        mysqli_stmt->prepare()   mysqli_stmt_prepare()   N/A 准备一个SQL语句用于执行
        mysqli_stmt->reset() mysqli_stmt_reset() N/A 重置一个prepared语句
        mysqli_stmt->result_metadata()   mysqli_stmt_result_metadata()   mysqli_get_metadata()   从一个prepared语句返回结果集元数据
        mysqli_stmt->send_long_data()    mysqli_stmt_send_long_data()    mysqli_send_long_data() 发送数据块
        mysqli_stmt->store_result()  mysqli_stmt_store_result()  N/A 从一个prepared语句中传输一个结果集

    */

    /*
            MySQLi_RESULT
        面向对象接口  过程化接口   别名(不要使用)    描述
        属性
        $mysqli_result->current_field    mysqli_field_tell() N/A 获取当前字段在结果集指针中的开始位置
        $mysqli_result->field_count  mysqli_num_fields() N/A 获取结果中字段数量
        $mysqli_result->lengths  mysqli_fetch_lengths()  N/A 返回结果集中当前行的每列的值得长度,返回数组
        $mysqli_result->num_rows mysqli_num_rows()   N/A 获取结果中行的数量
        方法
        mysqli_result->data_seek()   mysqli_data_seek()  N/A 将结果中的结果指针调整到任意行
        mysqli_result->fetch_all()   mysqli_fetch_all()  N/A 抓取所有的结果行并且以关联数据,数值索引数组,或者两者皆有的方式返回结果集。仅可用于 mysqlnd。
        mysqli_result->fetch_array() mysqli_fetch_array()    N/A 以一个关联数组,数值索引数组,或者两者皆有的方式抓取一行结果
        mysqli_result->fetch_assoc() mysqli_fetch_assoc()    N/A 以一个关联数组方式抓取一行结果
        mysqli_result->fetch_field_direct()  mysqli_fetch_field_direct() N/A 抓取一个单字段的元数据
        mysqli_result->fetch_field() mysqli_fetch_field()    N/A 返回结果集中的下一个字段
        mysqli_result->fetch_fields()    mysqli_fetch_fields()   N/A 返回一个代表结果集字段的对象数组
        mysqli_result->fetch_object()    mysqli_fetch_object()   N/A 以一个对象的方式返回一个结果集中的当前行
        mysqli_result->fetch_row()   mysqli_fetch_row()  N/A 以一个枚举数组方式返回一行结果
        mysqli_result->field_seek()  mysqli_field_seek() N/A 设置结果指针到特定的字段开始位置
        mysqli_result->free(), mysqli_result->close, mysqli_result->free_result    mysqli_free_result()    N/A 释放与一个结果集相关的内存
    */
    /*注意 MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
     其实这两个参数的区别还是很大的。
    (1)区别在于从服务器上检索结果集的行。
    (2)MYSQLI_USE_RESULT 启动查询,但实际上并未获取任何行
    (3)MYSQLI_STORE_RESULT 立即检索所有的行
    (4)MYSQLI_STORE_RESULT 从服务器上检索结果集时,就提取了行,并为之分配内存,存储到客户机中,随后调用
         mysqli_fetch_array()就再也不会返回错误,因为它仅仅是把行脱离了已经保留结果集的数据结 构,mysqli_fetch_array()返回 NULL始终表示已经到达结果集的末端。
    (5)MYSQLI_USE_RESULT 本身不检索任何行,而只是启动一个逐行的检索,就是说必须对每行调 用
        mysqli_fetch_array()来自己完成。既然如此,虽然正常情况下,mysqli_fetch_array()返回NULL仍然表示此 时已到达结果集的末端,但也可能表示在与服务器通信时发生错误。

     
     如果是MYSQLI_USE_RESULT,query以后得到mysqli_result对象后,执行data_seek会出错,因为
     mysqli_result::data_seek() [mysqli-result.data-seek]: Function cannot be used with MYSQL_USE_RESULT 

     与MYSQLI_USE_RESULT相比,MYSQLI_STORE_RESULT 有着较高的内存和处理需求,因为是在客户机上维护整个结果集,所以内存分配和创建数据结构的耗费是非常巨大的,如果想一次检索多个行,可用 MYSQLI_USE_RESULT。
     MYSQLI_USE_RESULT有着较低的内存需求,因为只需给每次处理的单行分配足够的空间。这样速度就较快,因为不必为结果集建立复杂的数据结构。
     另一方面,MYSQLI_USE_RESULT把较大的负载加到了服务器上,它必须保留结果集中的行,直到客户机看起来适合检索所有的行。
    */
}

$dbHelper=new mysqliHelp;
$dbHelper->connect('localhost', 'root', '', 'tt');

//$dbHelper->db->select_db("tt");
//$dbHelper->db->set_charset("utf8");

 
//这里如果是MYSQLI_USE_RESULT,下面的$dbHelper->data_seek($query,10);就会出错
$query=$dbHelper->query("select id,cateid,title from product limit 22",MYSQLI_STORE_RESULT );
//$query=$dbHelper->query("update product set  createtime=UNIX_TIMESTAMP()  limit 22");

//$query=$dbHelper->query("insert  into `product`(`cateid`,`title`,`text`,`createtime`) values (2,'test','content',1284822691)");
//$query=$dbHelper->query("delete from `product` where id=1");
//$query=$dbHelper->query("replace into product(id,cateid,title,text,createtime) values(1,2,'this is demo','test',UNIX_TIMESTAMP())");

 
echo $query->num_rows."总数";

//var_dump($query);

 
//$row=$dbHelper->fetch_array($query);

//var_dump($row);

 
//finfo = $dbHelper->fetch_fields($query);

//var_dump($finfo);
// foreach ($finfo as $val) {

    // printf("Name:     %s\n", $val->name);
    // printf("Table:    %s\n", $val->table);
    // printf("max. Len: %d\n", $val->max_length);
    // printf("Flags:    %d\n", $val->flags);
    // printf("Type:     %d\n\n", $val->type);
// }

//如果是查询操作affected_rows行数为1,num_rows为查询结果行数,num_fields为字段数目
//如果是更新或者删除操作affected_rows为受影响的行数,num_rows为null,num_fields为null
//
$dbHelper->data_seek($query,10);

$row=$dbHelper->fetch_row($query);

var_dump($row);

 

echo "影响行数:", "<br/>";
var_dump($dbHelper->affected_rows());
//var_dump($dbHelper->db->affected_rows );

echo "查询行数","<br/>";
var_dump($dbHelper->num_rows($query));
echo "列数:","<br/>";
var_dump($dbHelper->num_fields($query));

  
//第1种 
$sql="select id,cateid,title from product where cateid=? and title like  ? and createtime<".time();

$stmt=$dbHelper->prepare($sql);

var_dump($stmt);
$stmt->bind_param('is',$cateid,$title);

$title="%%";
$cateid=10;
$stmt->execute();
$stmt->bind_result($col1, $col2,$col3);

 
/* fetch values */
while ($stmt->fetch()) {
    printf("%s %s"."<br/>", $col1, $col3);
}

echo "<br/>";
$title="%%";
$cateid=4;
$stmt->execute();
$stmt->bind_result($col1, $col2,$col3);

 
/* fetch values */
while ($stmt->fetch()) {
    printf("%s %s %s"."<br/>", $col1, $col2,$col3);
}

$stmt->close();

 
//第2种

$stmt=$dbHelper->db->stmt_init();
$stmt->prepare($sql);
$stmt->bind_param('is',$cateid,$title);

$title="%%";
$cateid=10;
$stmt->execute();
$stmt->bind_result($col1, $col2,$col3);

 
/* fetch values */
while ($stmt->fetch()) {
    //printf("%s %s"."<br/>", $col1, $col3);
}

echo "<br/>开始multi_query:<br/>";

 
//multi_query实例
//multi_query()方法的返回值,以及 //mysqli的属性errno、error、info等只与第一条SQL命令有关,无法判断第二条及以后的命令是否在执行时发生了错误。所以在执行 //multi_query()方法的返回值是TRUE时,并不意味着后续命令在执行时没有出错。

$sql="select id,cateid,title from product where cateid=4;";
$sql.="select id,cateid,title from product where cateid=10";

$query=$dbHelper->db->multi_query($sql);

if($query)
{
      do {
        /* store first result set */
        //下面两种方法有什么区别?
        // if ($result = $dbHelper->db->store_result()) {
            // while ($row = $result->fetch_row()) {
                // $data[]=$row;
            // }
            // $result->free();
        // }
        if ($result = $dbHelper->db->use_result()) {//返回mysqli_result类型
            //$result->data_seek(0);//返回bool
            while ($row = $result->fetch_row()) {
                $data[]=$row;
            }
            //$result->close();
        }

         
        /* print divider */
        if ($dbHelper->db->more_results()) {
            printf("-----------------\n");
            $data[]="_______________________________";
        }
    } while ($dbHelper->db->next_result());

}
var_dump($data);
//exit;
//执行事务 实例
//确保操作的表时innodb类型的表
//如果是MyISAM,逻辑出错的话, 会执行所有操作,不回滚
$price=1;
$success=true;
$dbHelper->db->autocommit(0);
$result=$dbHelper->query("update product set cateid=cateid-$price where id=1000" );
if(!$result  || $dbHelper->affected_rows()!=1)
{
    $success=false;

}

$result=$dbHelper->query("update product set cateid=cateid+$price where id=2");
if(!$result  || $dbHelper->affected_rows()!=1)
{
    $success=false;

}

if($success)
{
$dbHelper->db->commit();
echo "成功";

}else
{
$dbHelper->db->rollback();
echo "失败";

}
$dbHelper->db->autocommit(1);

 
//var_dump(  $dbHelper->insert_id());
var_dump($mysql_debug_query);  //打印sql查询信息

 
//
?>

PHP 相关文章推荐
文章推荐系统(二)
Oct 09 PHP
数字转英文
Dec 06 PHP
php中计算程序运行时间的类代码
Nov 03 PHP
10 个经典PHP函数
Oct 17 PHP
php5.3不能连接mssql数据库的解决方法
Dec 27 PHP
PHP 实现判断用户是否手机访问
Jan 21 PHP
php随机显示指定文件夹下图片的方法
Jul 13 PHP
php图片上传类 附调用方法
May 15 PHP
PHP简单实现DES加密解密的方法
Jul 12 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
Mar 31 PHP
详细解读php的命名空间(一)
Feb 21 PHP
PHP实现文件上传后台处理脚本
Mar 04 PHP
php session_start()出错原因分析及解决方法
Oct 28 #PHP
php 强制下载文件实现代码
Oct 28 #PHP
php获取qq用户昵称和在线状态(实例分析)
Oct 27 #PHP
php获取数组长度的方法(有实例)
Oct 27 #PHP
使用淘宝IP库获取用户ip地理位置
Oct 27 #PHP
简单的php文件上传(实例)
Oct 27 #PHP
PHP 使用pcntl和libevent 实现Timer功能
Oct 27 #PHP
You might like
php session 错误
2009/05/21 PHP
php和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
PHP中if和or运行效率对比
2014/12/12 PHP
必须收藏的php实用代码片段
2016/02/02 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
2016/06/21 PHP
修改jquery.lazyload.js实现页面延迟载入
2010/12/22 Javascript
JS实现商品倒计时实现代码
2013/05/03 Javascript
jquery中get,post和ajax方法的使用小结
2014/02/04 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
js简单实现标签云效果实例
2015/08/06 Javascript
jQuery实现的自适应焦点图效果完整实例
2016/08/24 Javascript
JavaScript 监控微信浏览器且自带返回按钮时间
2016/11/27 Javascript
NPM 安装cordova时警告:npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to
2016/12/20 Javascript
jQuery基于Ajax方式提交表单功能示例
2017/02/10 Javascript
jQuery实现的别踩白块小游戏完整示例
2019/01/07 jQuery
三步实现ionic3点击退出app程序
2019/09/17 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
js实现贪吃蛇小游戏(加墙)
2020/07/31 Javascript
vscode自定义vue模板的实现
2021/01/27 Vue.js
python网络编程示例(客户端与服务端)
2014/04/24 Python
利用Python命令行传递实例化对象的方法
2016/11/02 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
python使用requests.session模拟登录
2019/08/09 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
2019/12/12 Python
pytorch中获取模型input/output shape实例
2019/12/30 Python
python 利用matplotlib在3D空间中绘制平面的案例
2021/02/06 Python
实现strstr功能,即在父串中寻找子串首次出现的位置
2016/08/05 面试题
学生的自我鉴定范文
2013/10/24 职场文书
汽车装潢店创业计划书范文
2014/02/05 职场文书
军训自我鉴定范文
2014/02/13 职场文书
小区推广策划方案
2014/06/06 职场文书
行政执法作风整顿剖析材料
2014/10/11 职场文书
2014年保卫部工作总结
2014/11/21 职场文书
费用申请报告范文
2015/05/15 职场文书
朋友聚会开场白
2015/06/01 职场文书
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
2021/06/05 Python