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 相关文章推荐
4.与数据库的连接
Oct 09 PHP
社区(php&amp;&amp;mysql)五
Oct 09 PHP
PHP+javascript液晶时钟
Oct 09 PHP
介绍一些PHP判断变量的函数
Apr 24 PHP
php获取当前时间的毫秒数的方法
Jan 26 PHP
PHP合并静态文件详解
Nov 14 PHP
PHP上传文件时自动分配路径的方法
Jan 09 PHP
PHP 使用memcached简单示例分享
Mar 05 PHP
PHP时间和日期函数详解
May 08 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
Feb 07 PHP
利用PHPStorm如何开发Laravel应用详解
Aug 30 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
Oct 08 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调用Google translate_tts api实现代码
2013/08/07 PHP
php实现两表合并成新表并且有序排列的方法
2014/12/05 PHP
php foreach如何跳出两层循环(详解)
2016/11/05 PHP
php实现URL加密解密的方法
2016/11/17 PHP
php加密之discuz内容经典加密方式实例详解
2017/02/04 PHP
laravel dingo API返回自定义错误信息的实例
2019/09/29 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
图片按比例缩放函数
2006/06/26 Javascript
JavaScript 学习点滴记录
2009/04/24 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
解决js下referer兼容各大浏览器的方法
2014/11/03 Javascript
node.js中的buffer.length方法使用说明
2014/12/14 Javascript
JavaScript的内存释放问题详解
2015/01/21 Javascript
JS实现Ajax的方法分析
2016/12/20 Javascript
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
2018/10/18 Javascript
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
Python中利用函数装饰器实现备忘功能
2015/03/30 Python
在Python的Django框架上部署ORM库的教程
2015/04/20 Python
Python实现将目录中TXT合并成一个大TXT文件的方法
2015/07/15 Python
Python for Informatics 第11章之正则表达式(四)
2016/04/21 Python
Python在信息学竞赛中的运用及Python的基本用法(详解)
2017/08/15 Python
python 爬取疫情数据的源码
2020/02/09 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
小结Python的反射机制
2020/09/28 Python
删除pycharm鼠标右键快捷键打开项目的操作
2021/01/16 Python
css3+jq创作含苞待放的荷花
2014/02/20 HTML / CSS
html5唤起app的方法
2017/11/30 HTML / CSS
Jones Bootmaker官网:优质靴子和鞋子在线
2020/11/30 全球购物
北京RT科技有限公司.net工程师面试题
2013/02/15 面试题
开门红主持词
2014/04/02 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
2015年圣诞节活动总结
2015/03/24 职场文书
CocosCreator如何实现划过的位置显示纹理
2021/04/14 Javascript