PHP访问MySQL数据库的常用方法

PHP访问MySQL数据库可以使用三种接口:

一.pdo_mysql(推荐)

连接:

$dsn = "mysql:host=localhost;dbname=test";
$username = 'root';
$password = '123456';
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
);

$pdo = new PDO($dsn, $username, $password, $options);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

增:
方法1: 绑定关联数组

$str=$pdo->prepare("INSERT INTO `user` (`username`, `password`) VALUES (:username,:password)");
$str->execute(array(":username"=>"test", ":password"=>"passwd"));

方法2: 绑定索引数组

$str=$pdo->prepare("INSERT INTO `user` (`username`, `password`) VALUES (?,?)");
$str->execute(array("test", "passwd"));

删:

$str=$pdo->prepare("delete from user where id > 3");
$str->execute();

改:

$str=$pdo->prepare("UPDATE `user` SET username=:username,password=:password where id=:id");
$str->execute(array(":username"=>"test", ":password"=>"passwd", ":id"=>"3"));

查:
方法1: 单个取出,循环遍历,返回到数组

$str=$pdo->prepare("select * from user where id > :id  order by id");
$str->execute(array(":id"=>2));
$str->setFetchMode(PDO::FETCH_ASSOC);
//共三种:1.PDO::FETCH_BOTH(默认) 2.FETCH_ASSOC 3.FTECH_NUM

while($data=$str->fetch()){
print_r($data);
echo '
';
}

方法2: 全部取出,返回到二维数组

$str=$pdo->prepare("select * from user order by fid");
$str->execute();
$data=$str->fetchAll(PDO::FETCH_NUM);
print_r($data);

方法3:单个取出,循环遍历,绑定字段名到变量

$str=$pdo->prepare("select fid,username,password from user order by id");
$str->execute();

$str->bindColumn("id",$id);
$str->bindColumn("username",$username);
$str->bindColumn(3,$password);

while($str->fetch()){
echo "$id | $username | $password
";
}
echo "总记录数:".$str->rowCount()."
";
echo "总字段数:".$str->columnCount()."
";

二.mysqli

	$mysqli=new mysqli("localhost", "root", "123456", "test");
$sql="select * from user order by id";
$result=$mysqli->query($sql);
echo '';
while($row=$result->fetch_assoc()){
echo '';
foreach($row as $col){
echo '';
}
echo '';
}
echo '
'.$col.'
';
$mysqli->close();

三.mysql

$conn=mysql_connect("localhost", "root", "123456") or die("数据库连接失败");
mysql_select_db("test") or die("选择数据库失败");;
$sql="select * from user";
$data=mysql_query($sql);
echo ''
while($row=mysql_fetch_assoc($result)){
echo '';
foreach($row as $col){
echo '';
}
echo '';
};
echo '
'.$col.'
';
mysql_close();

自助建站服务商 Weebly 获腾讯与红杉3500万美元联合投资,估值达4.55亿美元

 

 

近日,自助建站服务提供商 Weebly 获得一笔总额为3500万美元的投资,估值至此达到4.55亿美元;腾讯与红杉资本参与本轮融资。

Web 诞生早期,互联网出版工具就一直相伴左右,彼时,GeoCities 与 Angelfire 因为提供简单易用的服务而独领风骚。包括 Weebly、Squarespace 和 Wix 等最近一代的建站服务提供商,则让人们摆脱了对编程的依赖,借助拖拽工具让数以百万计的中小企业充分搭上互联网这辆“顺风车”,为自家业务谋取多样化的生 存之道。

Weebly 由3位宾州州立大学的学生于2006年创立,目前已为逾2000万个站点提供托管服务,而这些网站每月可带来1.75亿次的访问量。为获得更多高级功能,创业者通常都会向 Weebly 支付额外费用;这些人中就包括 Ceasar Chu,他是一家名为“Whiskey Ball”的电商网站的创始人。因为在 Weebly 上建设自己的网站,Ceasar 不仅令其产品获得了更高的曝光度,而且还与 Amazon.com 建立了合作关系。

Weebly CEO David Rusenko 在接受采访时称,公司现已实现盈利,并且现金非常充足。

本 轮融资助力 Weebly 全球扩张地同时,将助其与对手进行更好地竞争。上周,Squarespace 宣布已完成一笔总额为4000万美元的融资;另一方面,Wordpress 母公司 Automattic 目前也正在寻求新一轮融资,预计金额会达到1.5亿美元。更有消息称,以色列公司 Wix 将于年底进行 IPO。

“互联网正在改变企业的未来。”在声明中,腾讯美国主席 David Wallerstein 这样说道:“Weebly 则在将这种过渡推至集成简易操作平台,并以移动为驱动力的电商世界。”

通过投资优质的创业公司,腾讯正疯狂扩张着其版图。除了 Weebly,被腾讯投资过的公司包括:闪购电商网站 Fab、阅后即焚 App Snapchat、移动游戏制作商 Plain Vallina 等。

接近5亿美元的估值,意味着 Weebly 从此也步入了最具价值创业公司的行列。Weebly 是硅谷孵化器 Y Combinator 2007年的入选公司,值得一提的是,同年进入 YC 的另一家公司 Dropbox 则已经迈入“百亿美元俱乐部”。

来源:WSJ.D

jQuery 之父:坚持每天写代码

写代码

去年秋天我的支线代码项目 遇到了一些问题,项目进展不足,而且我没法找到一个完成更多代码的方法(在不影响我在Khan Academy方面的工作的前提下)。

我主要在周末进行我的支线,当然有时候也在晚上进行。这个方法对我而言效果不佳。我 的压力太重了,我需要在周末努力完成尽可能多的工作(如果没做 到,我会为此感到挫败)。还有一个问题是我无法保证每个周末都有空,而且我也不想把周末所有的时间都花在编程上(失去一切放松娱乐的机会)。

此外,每隔一周进行编码的话,间隙太长了。太容易忘记你正在做什么,或者你还需要做什么了(即使你有笔记)。如果你错过了一个周末的话,问题就更严重了,间隔一下子变成两周了。多周的上下文切换可能是致命的(我有很多支线项目因为这类注意力缺乏而死亡了)。

Jennifer Dewalt 去年通过在 180 天创建 180 个网站的方式来自学编程,她的做法启发了我。我决定采用一个简单的策略:每天编码。 继续阅读

MySQL优化

查看设置:
mysql> SHOW VARIABLES LIKE 'query_cache%';
+——————————+———-+
| Variable_name | Value |
+——————————+———-+
| query_cache_limit | 1048576 | 超过此大小的查询将不缓存
| query_cache_min_res_unit | 4096 | 缓存块的最小大小
| query_cache_size | 67108864 | 查询缓存总大小
| query_cache_type | ON | Query Cache 功能的开关
| query_cache_wlock_invalidate | OFF | 当有其他客户端正在对MyISAM表进行写操作时,如果查询在query cache中,是否返回cache结果还是等写操作完成再读表获取结果。
+——————————+———-+

查看状态
mysql> SHOW STATUS LIKE 'qcache%';
+————————-+———-+
| Variable_name | Value |
+————————-+———-+
| Qcache_free_blocks | 3 | 缓存中相邻内存块的个数。数目大说明可能有碎片。FLUSH QUERY CACHE会对缓存中的碎片进行整理,从而得到一个空闲块。
| Qcache_free_memory | 63319944 | 缓存中的空闲内存。
| Qcache_hits | 854 | 每次查询在缓存中命中时就增大
| Qcache_inserts | 386 | 每次插入一个查询时就增大。命中次数除以插入次数就是不中比率。
| Qcache_lowmem_prunes | 0 | 缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间来看;如果这个 数字在不断增长,就表示可能碎片非常严重,或者内存很少。
| Qcache_not_cached | 14 | 不适合进行缓存的查询的数量,通常是由于这些查询不是 SELECT 语句或者用了now()之类的函数。
| Qcache_queries_in_cache | 290 | 当前缓存的查询(和响应)的数量。
| Qcache_total_blocks | 630 | 缓存中块的数量。
+————————-+———-+

query_cache_min_res_unit的配置是一柄”双刃剑”,默认是4KB,设置值大对大数据查询有好处,但如果查询都是小数据查询,就容易造成内存碎片和浪费。

查询缓存碎片率 = Qcache_free_blocks / Qcache_total_blocks * 100%
查询缓存利用率 = (query_cache_size – Qcache_free_memory) / query_cache_size * 100%
查询缓存命中率 = (Qcache_hits – Qcache_inserts) / Qcache_hits * 100%

如果查询缓存碎片率超过20%,可以用FLUSH QUERY CACHE整理缓存碎片,或者试试减小query_cache_min_res_unit,如果查询都是小数据量的话。
查询缓存利用率在25%以下的话说明query_cache_size设置的过大,可适当减小;查询缓存利用率在80%以上而且Qcache_lowmem_prunes > 50的话说明query_cache_size可能有点小,要不就是碎片太多。
示例服务器 查询缓存碎片率 = 20.46%,查询缓存利用率 = 62.26%,查询缓存命中率 = 1.94%,命中率很差,可能写操作比较频繁吧,而且可能有些碎片。

相关经验:
如果Qcache_lowmem_prunes 值比较大,表示查询缓存区大小设置太小,需要增大。
如果Qcache_free_blocks 较多,表示内存碎片较多,需要清理,flush query cache
根据我看的 《High Performance MySQL》中所述,关于query_cache_min_res_unit大小的调优
,书中给出了一个计算公式,可以供调优设置参考:
query_cache_min_res_unit = (query_cache_size – Qcache_free_memory) / Qcache_queries_in_cache

世界上没有一个人是废物,只不过没有放对位置!

有一个男的,没考上大学,父母就给他找了个老婆结婚了,结婚后就在本村的小学教书。由于没有经验,不到一周就被学生轰下了台。回到家后,老婆为他擦了擦眼泪,安慰说,满肚子的东西,有人倒得出来,有人倒不出来,没必要为这个伤心,也许有更适合你的事情等着你去做。 

       后来,他外出打工,又被老板轰了回来,因为动作太慢。这时老婆对他说,手脚总是有快有慢,别人已经干很多年了,而你一直在念书,怎么快得了? 

       他又干过很多工作,但无一例外,都半途而废。然而,每次他沮丧地回来时,他老婆总安慰他,从没有抱怨。

       三十多岁时,他凭着一点语言天赋,做了聋哑学校的辅导员。后来,他又开办了一家残障学校。再后来,他在许多城市开办了残障人用品连锁店,他已经是一个拥有几千万资产的老板了。

有一天,功成名就的他问自己的老婆,自己都觉得前途渺茫的时候,是什么原因让你对我那么有信心呢?

       他老婆的回答朴素而简单。她说,一块地,不适合种麦子,可以试试种豆子;豆子也长不好的话,可以种瓜果;如果瓜果也不济的话,撒上一些荞麦种子一定能够开花。因为一块地,总有一粒种子适合它,也终会有属于它的一片收成。

        听完老婆的话,他落泪了!「老婆恒久而不绝的信念和爱,就像是一粒坚韧的种子;他的奇迹,就是这粒种子执著而生长出的奇迹!」

 "世界上没有一个人是废物,只不过没有放对位置! “

1.不懂珍惜,给你座金山也不会快乐。

2.不懂宽容,再多的朋友也终将离去。

3.不懂感恩,再优秀也难以成功。

4.不懂行动,再聪明也难以圆梦。

5.不懂合作,再拼搏也难以大成。

6.不懂积累,再挣钱也难以大富。

7.不懂满足,再富有也难以幸福。

8.不懂养生,再治疗也难以长寿。