精华内容
下载资源
问答
  • PHP MySQL 持久连接(mysql_pconnect)

    千次阅读 2018-10-16 16:10:10
    PHP MySQL 持久连接(mysql_pconnect) 先来一段 PHP 连接 MySQL 的经典代码: 1 2 3 4 5 6 7 8 <?php $con = mysql_connect("localhost", &...

    PHP MySQL 持久连接(mysql_pconnect)

    先来一段 PHP 连接 MySQL 的经典代码:

    1

    2

    3

    4

    5

    6

    7

    8

    <?php

    $con = mysql_connect("localhost", "root", "123456");

    if (!$con) {

        die("Could not connect: " . mysql_error());

    }

    // some code

    mysql_close($con);

    ?>

    这没什么问题,一直这样用。后来看文档发现有个函数 mysql_pconnect(打开一个到 MySQL 服务器的持久连接)。官方文档是这样介绍的:

    首先,当连接的时候本函数将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接,如果找到,则返回此连接标识而不打开新连接。

    其次,当脚本执行完毕后到 SQL 服务器的连接不会被关闭,此连接将保持打开以备以后使用(mysql_close() 不会关闭由 mysql_pconnect() 建立的连接)。

    我们都知道建立 MySQL 连接比较消耗资源,要是能复用连接那不是牛逼了。但是 PHP 不是脚本语言吗?运行完了啥都没了,怎么维持持久连接呢?

    实践是检验真理的唯一标准,还是试一试吧:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    <?php

    // pconnect.php

    $con = mysql_pconnect("localhost", "root", "123456");

    // connect.php

    // $con = mysql_connect("localhost","root","123456");

    if (!$con) {

      die('Could not connect: ' . mysql_error());

    }

    sleep(10);

    通过 URL 访问 pconnect.php,页面加载完成后,等待 10s ,新开浏览器再次访问。在 MySQL 命令行运行「show full processlist;」查看建立的连接:

    2015-10-15_001413

    感觉并没有复用呀,再次访问还是重新建立了连接(从 Time 字段的值可以看出),那么试试访问 connect.php :

    2015-10-14_230252

    很明显脚本执行完成连接就断了,这也是 mysql_connect 的特征,符合常理。但是怎么没有出现 mysql_pconnect 的特征呢?这种时候没办法,只能仔细再看文档,发现这么一句话:

    注意,此种连接仅能用于模块版本的 PHP。

     

    原来如此,我用的是 Nginx+PHP-FPM 模式,而非 Apache+php_module 模式。 Nginx+PHP-FPM 模式运行过程大概为:Nginx 根据配置(location ~ \.php$)发现这请求我处理不了,然后把请求转给 PHP-FPM(PHP FastCGI管理器) 处理(fastcgi_pass unix:/var/run/php5-fpm.sock;)。PHP-FPM 的 master 进程带着一帮小弟正等着处理上游来的请求呢,每来一个请求就会派一个小弟去处理。处理完了将结果返回给 Nginx,最后自己也死了,所以这个小弟生前建立的连接也就没了(准确来说是 MySQL 并不这鬼崽子挂了,还一直保持着这个连接,但别的小弟并不知道这事)。

    2015-10-14_232942

    在本地 WampServer 环境,同样方式访问 pconnect.php,结果如下:

    2015-10-14_235232

    明显可以看出连接得到了复用。在空闲的情况下,新的请求不会再新建连接。那为什么 Apache+php_module 模式能支持持久连接呢?其实这不是 PHP 能持久连接而是 Apache 维持了这个连接,相当于 Apache 的连接线程池充当了 MySQL 的连接池。

    那么同时大量访问呢?会是什么情况。

    2015-10-15_002241

    可以发现连接得到了复用,效率得到了提升。那这能说明 pconnect 是万金油吗?并不见得,官方文档中就有一段提醒:

    注意,如果持久连接的子进程数目超过了设定的数据库连接数限制,系统将会产生一些问题。如果数据库的同时连接数限制为 16,而在繁忙会话的情况下,有 17 个线程试图连接,那么有一个线程将无法连接。如果这个时候,在脚本中出现了使得连接无法关闭的错误(例如无限循环),则该数据库的 16 个连接将迅速地受到影响。

    由上面的试验也能看到,不管是哪种 PHP 运行模式,都会使 MySQL 产生很多闲置的连接进程,这会占用很多的内存,若配置不当(mysql.max_connections <<< Apache.MaxClients),在小内存的机器上 MySQL 很容易就会崩掉。更有甚者,当你的产品非常多时,每个产品配置了不同的 MySQL 账号密码,持久连接复用的整体效率会直线下降,大量的连接占着茅坑不拉屎,非常容易就会产生 “Too many connections MySQL error” 错误,进一步则 MySQL 崩掉。

    综上所诉,建议还是使用 mysql_connect(MySQL 扩展已经不推荐使用了,PHP 7 甚至在默认扩展中移除了此扩展,推荐使用 MySQLi 和 PDO)。当然也不用恐惧 pconnect,了解两者的区别与联系,做好配置和压测,在线上环境大内存机器上还是很有用的。不过现在在 HTTP 服务器这一块,Nginx 可以说已经完全取代了 Apache。感受一下 PHP CodeIgniter 框架 2.X 和 3.x 数据库默认配置的改变,就能更加容易体会到这一点:

    2015-10-15_011633

    关于 PHP MySQL 连接池可参考:http://wiki.swoole.com/wiki/page/350.html

    就目前来看,WEB 开发这块,折腾连接池等东西,还不如把(一部分)数据迁移到 Redis 等内存/No-SQL 数据库收益来的大。

    上文关于持久连接的一些结论并不仅仅适用于 MySQL,同样适用于 Redis 等其它数据库。

    在下对于这一块理解的也不是很深,若有任何纰漏,还请不吝赐教。

    参考资料:

    《PHP MySQL 连接数据库》 http://www.w3school.com.cn/php/php_mysql_connect.asp

    《PHP: mysql_pconnect – Manual》 http://php.net/manual/zh/function.mysql-pconnect.php

    《数据库持久连接 》 http://php.net/manual/zh/features.persistent-connections.php

    《概念了解:CGI,FastCGI,PHP-CGI与PHP-FPM》 http://www.nowamagic.net/librarys/veda/detail/1319

    展开全文
  • php mysql 中文乱码解决

    千次阅读 2019-02-25 21:06:42
    php mysql 中文乱码解决,数据库显示正常,php调用不正常(引用连接) https://www.cnblogs.com/little-white/p/4155567.html

    php mysql 中文乱码解决,数据库显示正常,php调用不正常(引用连接)

    https://www.cnblogs.com/little-white/p/4155567.html

    展开全文
  • php mysql echarts动态生成图表

    千次阅读 2018-05-28 15:05:24
    php mysql echarts动态生成图表,数据库和表格使用的java Servlet echarts 图表生成的一样数据,不知道的看我前面一篇博文;需要两个文件完成1. 数据获取文件 weekbar.php代码如下:&lt;?php header("...

    php mysql echarts动态生成图表,数据库和表格使用的java Servlet echarts 图表生成的一样数据,不知道的看我前面一篇博文;需要两个文件完成

    1. 数据获取文件 weekbar.php

    代码如下:

    <?php  
    header("Content-type=text/json;charset=UTF-8");  
      
    $conn = @mysql_connect("127.0.0.1","root","root") or die("无法连接数据库...");  
    mysql_query("set names utf-8");  
    mysql_select_db("test",$conn);
    $resultset = mysql_query('SELECT name, num FROM bar ');  
    $data = array();  
    class Alteration{  
        public $name;  
        public $num;  
    }  
      
    while($row = mysql_fetch_array($resultset,MYSQL_ASSOC)) {  
        $alter = new Alteration();  
        $alter->name = $row['name'];   
        $alter->num = $row['num'];  
        $data[] = $alter;  

    /*依次存入shop和num列到alyer()*/  
      
    echo json_encode($data);
    mysql_close($conn);  
      
    ?>

    2.数据图表展示页面echart.php

    代码如下:

    <!DOCTYPE html>  
    <html>  
    <head>  
        <meta charset="utf-8">  
        <title>ECharts</title>  
        <!-- 引入 echarts.js -->  
    <script src="https://cdn.bootcss.com/echarts/3.5.4/echarts.js"></script>  
        <script src="http://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script>  
      
    </head>  
    <body>  
        <!-- 为ECharts准备一个具备大小(宽高)的Dom -->  
        <div id="container" style="width: 600px;height:400px;"></div>  
       <script>


        // 初始化两个数组,盛装从数据库中获取到的数据
        var names = [], nums = [];


        //调用ajax来实现异步的加载数据
        function getusers() {
            $.ajax({
                type: "post",
                async: false,
                url: "weekbar.php",
                data: {},
                dataType: "json",
                success: function(result){
                    if(result){
                        for(var i = 0 ; i < result.length; i++){
                            names.push(result[i].name);
                            nums.push(result[i].num);
                        }
                    }
                },
                error: function(errmsg) {
                    alert("Ajax获取服务器数据出错了!"+ errmsg);
                }
            });
        return names, nums;
        }


        // 执行异步请求
        getusers();




        // 初始化 图表对象
            var mychart = echarts.init(document.getElementById("container"));
            // 进行相关项的设置,也就是所谓的搭搭骨架,方便待会的ajax异步的数据填充
            var option = {
                title : {
                    text : '姓名数量分布图'
                },
                tooltip : {
                    show : true
                },
                legend : {
                    data : [ '' ]
                },
                xAxis : [ {
                    data : names
                } ],
                yAxis : [ {
                    type : 'value'
                } ],
                series : [ {
                    "name" : "",
                    "type" : "bar",
                    "data" : nums
                } ]
            };


            // 将配置项赋给chart对象,来显示相关的数据
            mychart.setOption(option);








        </script>
    </body>  

    </html>  


    运行效果:




    呵呵呵,完成!!!

    友情提示:

    java Servlet mysql json ECharts图表生成实战【CSDN学院在线课程】[需要源代码的,不会的,可以看我的这个教程]

    https://edu.csdn.net/course/detail/8279
    展开全文
  • PHP mysql 优化

    千次阅读 2017-09-12 08:09:41
    几条MySQL小技巧 1、SQL语句中的关键词最好用大写来书写,第一易于区分关键词和操作对象,第二,SQL语句在执行时,MySQL会将其转换为大写,手动写大写能增加查询效率(虽然很小)。2、如果我们们经对数据库中的数据...
    几条MySQL小技巧
    
    • 1、SQL语句中的关键词最好用大写来书写,第一易于区分关键词和操作对象,第二,SQL语句在执行时,MySQL会将其转换为大写,手动写大写能增加查询效率(虽然很小)。
    • 2、如果我们们经对数据库中的数据行进行增删,那么会出现数据ID过大的情况,用ALTER TABLE tablename AUTO_INCREMENT=N,使自增ID从N开始计数。
    • 3、对int类型添加 ZEROFILL 属性可以对数据进行自动补0
    • 4、导入大量数据时最好先删除索引再插入数据,再加入索引,不然,mysql会花费大量时间在更新索引上。
    • 5、创建数据库书写sql语句时 ,我们可以在IDE里创建一个后缀为.sql的文件,IDE会识别sql语法,更易于书写。更重要的是,如果你的数据库丢失了,你还可以找到这个文件,在当前目录下使用/path/mysql -uusername -ppassword databasename < filename.sql来执行整个文件的sql语句(注意-u和-p后紧跟用户名密码,无空格)。

     

    数据库设计方面优化
    1、数据库设计符合第三范式,为了查询方便可以有一定的数据冗余。
    2、选择数据类型优先级 int > date,time > enum,char>varchar > blob,选择数据类型时,可以考虑替换,如ip地址可以用ip2long()函数转换为unsign int型来进行存储。
    3、对于char(n)类型,在数据完整的情况下尽量较小的的n值。
    4、在建表时用partition命令对单个表分区可以大大提升查询效率,MySQL支持RANGE,LIST,HASH,KEY分区类型,其中以RANGE最为常用,分区方式为:
      CREATE TABLE tablename{
      }ENGINE innodb/myisam CHARSET utf8 //选择数据库引擎和编码
      PARTITION BY RANGE/LIST(column),//按范围和预定义列表进行分区
      PARTITION partname VALUES LESS THAN /IN(n),//命名分区并详细限定分区的范围
    5、选择数据库引擎时要注意innodb 和 myisam的区别
      存储结构:MyISAM在磁盘上存储成三个文件。而InnoDB所有的表都保存在同一个数据文件中,一般为2GB
      事务支持:MyISAM不提供事务支持。InnoDB提供事务支持事务。
      表锁差异:MyISAM只支持表级锁。InnoDB支持事务和行级锁。
      全文索引:MyISAM支持 FULLTEXT类型的全文索引(不适用中文,所以要用sphinx全文索引引擎)。InnoDB不支持。
      表的具体行数:MyISAM保存有表的总行数,查询count(*)很快。InnoDB没有保存表的总行数,需要重新计算。
      外键:MyISAM不支持。InnoDB支持


     

    索引方面优化
    1、innodb是聚簇索引,存储索引时必须有主键,如果没有指定,引擎会自动生成一个隐藏的主键,生成一个主索引,索引内存放的是主键的物理地址,数据靠主键存放,每次使用索引时要先找到主索引,然后找到主索引下的数据。

    优点通过主键查找特别快,缺点是次级索引会变慢,因为需要先通过次级索引(次级索引里是主索引的位置。)找到主索引,然后通过主索引找数据。并且如果主键无规律,插入新值时需要移动较多数据块,会影响效率,所以要尽量使用有规律递增的int型做主键。还有因为数据紧跟着主键放,所以如果数据中有数据量特别大的列(text/blob),innodb查询时会跳过很多数据块,也会导致慢。

    2、myisam的索引各个索引都相同统一指向磁盘上各个行的地址,都是轻量级的指针数据。缺点是各个索引的建立不是通过主键,查询没有聚簇索引查找主键快。但其因为存储的是地址,所以在插入新值时比较方面移动改变。
    3、进行多条件查询时,对多条件分别建立索引时,执行sql查询时,MySQL只会选择一个最贴近的索引来使用,所以如果需要多条件查询,要建立联合索引,即使会造成数据冗余。
    联合索引的BTREE建立方法:对第一个条件建立索引,在第一个索引的BTREE区域对第二个条件建立索引,以此类推,所以,在使用索引时,不用第一个条件用第二个条件也不会用到联合索引。使用索引时要条件要有顺序,有序列的使用。
    4、索引长度对查询也有很大影响,我们应该尽量建立短的索引长度,我们可以使用查询列
    SELECT COUNT(DISTINCT LEFT(column)) / COUNT(*) FROM tablename  来测试对column列建立索引时选取不同的长度,索引的覆盖率有多大,我们选择一下接近饱和的n个长度来建立索引
    ALTER TABLE tablename ADD INDEX (column(n));  来对某一列的前n个字符建立索引。若前n个字符相同,我们甚至可以对字符串进行反转存储,然后建立索引。
    5、对于经常修改导致的索引碎片的维护方式:ALTER TABLE tablename ENGINE oldengine;即再次应用一下表存储引擎,使其自动维护;也可以用 OPTIMIZE tablename 命令来进行维护。



    数据查询方面优化
    数据库操作尽量少查询,有查询时尽量不在数据库层面上进行数据操作,而是返回到PHP脚本中操作数据,减轻数据库压力。
    一旦发现有数据库性能问题,要及时解决,一般用慢查询日志记录查询很"慢"的语句,用EXPLAIN分析查询和索引使用情况,用PROFILE分析语句执行时的具体资源消耗。
    慢查询日志:
    1、在my.ini或my.cnf的[mysqld]下添加
    slow_query_log_file=/path //设置日志存储路径
    long_query_time=n //设置如果语句执行时间达到n秒,就会被记录下来
    2、然后在MySQL里设置SET slow_query_log='ON'来开启慢查询。
    3、记录下日志后,我们用/bin/目录下的mysqldumpslow filename来查看日志,其常用参数如下:
      -g pattern 使用正则表达式
      -t n返回前n条数据
      -s c/t/l/r 以记录次数/时间/查询时间/返回记录数来排序

    EXPLAIN语句
    使用方法,在要执行的查询语句前面加EXPLAIN
    EXPLAIN SELECT * FROM user;
    得到形如下图的结果:


    下面是对每一项的解释:
    id 查询语句的id,简单查询无意义,多重查询时可以看出执行查询的顺序
    select-type 执行的查询语句的类型,对应多重查询,有simple/primary/union等。
    tabel 查询语句查询的数据表
    type  获得数据的类型 常见的类型效率从高到低为 null>const>eq_ref>ref>range>index>all
    possible-keys:可能使用到的索引
    key 使用到的索引
    key_len索引长度
    ref 使用哪个列与索引一起从表中选择。
    rows  查找到数据要扫描的大概行数,可看出索引的优劣
    extra  常见的有
    using filesort 查询到数据后进行文件排序,较慢,需要优化索引
    using where 读取整行数据后进行判断过滤,是否符合where条件
    using index 索引覆盖,即在牵引中已经有这存储了目标数据,直接读取索引,很快。

    PROFILE
    用SELECT @@frofiling来查看PROFILE的开启状态。
    如果未开启,用SET profiling=1来开启。
    开启之后,再执行查询语句,MySQL会自动记录profile信息。
    应用show profiles查看所有的sql信息,结果为 Query_ID Duration Query三列结果,分别是查询ID,用时和所用的sql语句。
    我们可以使用
    SHOW PFROFILE [type[,type]][FOR QUREY Query_ID][Limit rwo_count [OFFSET offset]]
    type常见有ALL(全部) BLOCK IO(显示IO相关开销) CPU(CPU开销) MEMORY(内存开销)等

     


    大型存储方面优化
    数据库主从复制和读写分离

    1、master将改变记录到二进制日志中,slave将master的二进制拷贝到它的中继日志中,重新将数据返回到它自己的数据中,达到复制主服务器数据的目的。

    主从复制可以用作:数据库负载均衡、数据库备份、读写分离等功能。
    2、配置主服务器master
      修改my.ini/my.conf
      [mysqld]
      log-bin=mysql-bin //启用二进制日志
      server-id=102 //服务器唯一ID
    3、配置从服务器slave
      log-bin=mysql-bin //启用二进制日志
      server-id=226 //服务器唯一ID
    4、在主服务器上授权从服务器
      GRANT REPLICATION SLAVE ON *.* to 'slavename'@'IP' identified by 'root'
    5、在从服务器上使用
      change master to
        master_host="masterip",
        master_user="masteruser",
        master_password="masterpasswd";
    6、然后使用start slave命令开始进行主从复制。
    不要忘记在每次修改配置后重启服务器,然后可以在主从服务器上用show master/slave status查看主/从状态。
    实现数据库的读写分离要依赖MySQL的中间件,如mysql_proxy,atlas等。通过配置这些中间件来对主从服务器进行读写分离,使从服务器承担被读取的责任,从而减轻主服务器的负担。


    数据库的sharding
    在数据库中数据表中的数据量非常庞大的时候,无论是索引还是缓存等压力都很大,对数据库进行sharding,使之分别以多个数据库服务器或多个表存储,以减轻查询压力。
    方式有垂直切分、水平切分和联合切分。
    垂直切分:在数据表非常多的时候,把数据库中关系紧密(如同一模块,经常连接查询)的表切分出来分别放到不同的主从server上。
    水平切分:在表不多,而表里的数据量非常大的时候,为了加快查询,可以用哈希等算法,将一个数据表分为几个,分别放到不同的服务器上,加快查询。水平切分和数据表分区的区别在于其存储介质上的不同。
    联合切分:更多的情况是数据表和表中的数据量都非常大,则要进行联合切分,即同时进行垂直和水平分表,将数据库切分为一个分布式的矩阵来存储。
    这些数据库的优化方式,每一种拿出来都可以写作一篇文章,可谓是博大精深,了解并记忆了这些方式,可以在有需要的时候进行有目的的选择优化,达到数据库效率的高效。

    展开全文
  • 第67篇 PHP MySQL连接创建数据库及表

    千次阅读 2017-02-05 07:50:55
    关键词:PHP MySQL简介, PHP连接mysql,php创建mysql数据库,php创建mysql表 一、PHP MySQL 1.1 PHP MySQL简介 语句 setnames utf8;用于设定数据库编码,让中文可以正常显示。 1.2 PHP 连接 MySQL PHP 5 及...
  • PHP Mysql support: 是mysql 还是mysqlnd?

    千次阅读 2019-07-01 11:52:46
    你想在php程序中支持mysql(mysqli或PDO-mysql)。你会怎么选择? 首先,您可能应该使用PDO。与mysqli相比,它只是一个更干净的数据库界面,如果你使用像Doctrine2这样的ORM,它也往往是支持的选项。 但是你可能已经...
  • php mysql 开启事务

    千次阅读 2018-01-08 10:24:18
    mysql_query("SET AUTOCOMMIT=0"); //设置mysql不自动提交,需自行用commit语句提交 $res1 = mysql_query($sql1); $res2 = mysql_query($sql2); if ($res1 && $res2) { mysql_query("COMMIT");//提交事务 }else{ ...
  • $servername = "sdm163155241.com"; $username = "sdm1655241"; $password = "1746aaa; ...$con = mysql_connect($servername, $username, $password); if (!$con) { die("Connection failed: " . my
  • 腾讯云服务器linux系统下apache php mysql安装CentOS系统我们可以直接使用 yum install 的方式进行软件安装,腾讯云有提供软件安装源,是 同步CentOS官方的安装源,包涵的软件都是当前最稳定的版本,因此直接安装...
  • php mysql_connect(),mysqli区别

    千次阅读 2016-10-22 19:02:01
    php mysql_connect(),mysqli区别 由于基础问题,这个东西害我找了一天错误在哪也没找出来,晚上终于好了,总结下: mysql_connect()是面向过程的数据库连接方式,mysqli是面向对象的方式。 如字面意思,一个是...
  • php mysql事务

    千次阅读 2013-01-06 15:46:19
    这里记录一下php操作mysql事务的一些知识 要知道,MySQL默认的行为是在每条SQL语句执行后执行一个COMMIT语句,从而有效的将每条语句独立为一个事务。但是,在使用事务时,是需要执行多条sql语句的,那么针对执行多...
  • PHP MySQL mysql_query()使用说明

    千次阅读 2015-03-27 09:35:36
    mysql_query() 函数执行一条 MySQL 查询。语法如下: mysql_query(query,connection); 参数 query 是必需的,它规定了要发送的SQL查询。 参数 connection 是可选的,它规定了SQL连接标识符,如果它为设置,则使用...
  • php mysql中文排序失效解决方法convert(name USING gbk) 在php中经常用到中文排序,当mysql使用的默认utf8编码时,如果直接order by 中文字段排序,排序结果会不正确。下面分享一种mysql中文排序失效解决...
  • php mysql 求和 sum

    千次阅读 2018-01-22 21:52:06
    $ts_rs=DB::get_one("SELECT sum(totaltime) as tsecond FROM ".$_M['table']['live_user_data_statistics_time']." WHERE cc_id='$id4' and uid='$id'");
  • php mysql_connect不能用

    2017-02-05 03:16:03
    $con = mysql_connect("127.0.0.1","root","password"); echo 'hello'; if($con){ echo '连接mysql数据库成功. '; }else{ die('连接mysql数据库失败:' . mysql_error()); } mysql_close($con);...
  • 连接数据库的代码: $db = new mysqli('localhost', 'root', '123', 'books'... // $db = mysql_connect('localhost', 'root', '123', 'books'); // $db = mysqli_connect("localhost", "root", "123","books"); //m
  • php MySQL使用rand函数随机取记录

    千次阅读 2011-03-14 10:06:00
    <br />php MySQL使用rand函数随机取记录 如何在mysql中使用随机数, 如何写一个语句能一下更新几百条MYSQL数据! 需要测试MYSQL数据库,里面有一个上万条数据的数据库,如何写一个PHP文件一下每次...
  • PHP mysql_connect连接失败

    千次阅读 2017-03-30 09:18:20
    欢欢喜喜地在mac电脑上安装XAMPP...“extension=php_mysql.dll” ” extension_dir = “ext” “等等,但是毫无作用。关键点在这里,检查你的php版本phpinfo();结果: 原来从php7开始,数据库扩展换成了mysqli。
  • PHP mysql与mysqli事务使用说明

    千次阅读 2019-08-14 13:14:21
    1.应用场景 ...mysql //如果写入数据库过程中失败,再回滚! 导出:ini<-1.json<-parseJsonTemp<-mysql 2.事务介绍 MySQL中事务ACID的原理:https://blog.csdn.net/william_n/article...
  • 微信昵称特殊字符存储 PHP MYSQL

    千次阅读 2017-06-20 14:57:58
    php 解决微信昵称emoji表情插入MySQL报错 在PHP接受到微信用户昵称入库的时候报错 原因:utf-8 最大3个字节,而emoji占4个字节 解决办法: 1.修改mysql 数据库的字符集,改为utf8mb4,但是前提是MySQL...
  • php mysql PDO使用

    万次阅读 2013-09-07 08:15:38
    $dbh = new PDO('mysql:host=localhost;dbname=access_control', 'root', ''); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbh->exec('set names utf8'); /*添加*///$sql = ...
  • php mysql创建临时表

    千次阅读 2013-07-23 12:16:35
    mysql创建临时表的方法并不复杂,下面就为您详细介绍php mysql创建临时表的实现方法,希望对您学习mysql创建临时表方面能有所帮助。 php $link=mysql_connect('localhost','root','456789'); if($
  • php mysql回滚示例

    千次阅读 2009-12-25 15:29:00
    首先,建InnoDB类型的表,才能支持事务$handler = mysql_connect(localhost, , );mysql_select_db(test);mysql_query(SET AUTOCOMMIT=0); // 设置为不自动提交查询mysql_query(START TRANSACTION); // 开始查询,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 177,929
精华内容 71,171
关键字:

phpmysql

mysql 订阅