喜悦国际村 
» 游客:  注册 | 登录 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

【北京】--【低薪】-【诚聘】--- 高级PHP工程师,WEB前台开发工程师

上一主题 下一主题
 48  1/5  1  2  3  4  5  > 
     
标题: [喜悦原创首发]php6展望 && PDO的使用  
 
fcicqbbs
注册会员
Rank: 2



UID 74804
精华 0
积分 96
帖子 110
金钱 96 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-6-10
状态 离线
[喜悦原创首发]php6展望 && PDO的使用

先展望php6(当然也可能是php5.2之类,暂未确定)

去掉的东西(感觉有必要提的)
2.1 register_globals
这个影响安全,又不好处理.
2.2 magic_quotes
这个本意很好,但反对的声音很多...
2.3 safe_mode
这个东西被E_CORE_ERROR代替了.
2.11 register_long_arrays, HTTP_*_VARS
这个东西影响速度

特别的
1. Unicode
这个东西好!不用再担心很多了.
3.1 XMLReader / XMLWriter in the distribution, on by default
以后处理rss之类的就更容易了
3.2 Move non-PDO DB extensions to PECL
下面特别讨论.
3.3 Move ereg to PECL
实际preg,ereg差不多.用两个等于浪费.

其余的参见(http://www.php.net/~derick/meeting-notes.html)

============================================
下面描述一下,在php6,没有mysql_*,我们怎么过.

首先要连接mysql数据库
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
//如果你想连mssql:
//mssql:host=localhost;dbname=testdb
//连pgsql:
//pgsql:host=localhost port=5432 dbname=testdb user=bruce password=mypass
//连odbc(DSN)
//odbc:testdb
//连access:
//odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\db.mdb;Uid=Admin
//还有oracle,sqlite,db2....

我要执行个查询
   foreach ($dbh->query('SELECT * from FOO') as $row) {
      print_r($row); //这个结果和mysql_fetch_array差不多。PDOStatement::setFetchMode 可以调整。
   }
//现在多简单

另外还可以:
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

/* Fetch all of the remaining rows in the result set */
print("Fetch all of the remaining rows in the result set:\n");
$result = $sth->fetchAll();
print_r($result);
得到:
Fetch all of the remaining rows in the result set:
Array
(
    [0] => Array
        (
            [NAME] => pear
            [0] => pear
            [COLOUR] => green
            [1] => green
        )

    [1] => Array
        (
            [NAME] => watermelon
            [0] => watermelon
            [COLOUR] => pink
            [1] => pink
        )

)

偶还想删/更新条数据。
$count = $dbh->exec("DELETE FROM fruit WHERE colour = 'red'");
//$count就是删除的条数。相当于mysql_affected_rows
//也可用PDOStatement::rowCount

偶忘了偶用啥数据库了。。。。
if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
  echo "Running on mysql; doing something mysql specific here\n";
}

偶插入数据的时候要用mysql_escape_string.现在?

print "Unquoted string: $string\n";
print "Quoted string: " . $conn->quote($string) . "\n";
得到:
Unquoted string: Nice
Quoted string: 'Nice'
//你看现在连引号都自动加了。。。。
//注意在不同的数据库中结果不同,比如有的' => '',有的' => \',\ => \\
//现在没顾虑了,全自动。

//最后偶要关闭它了
$conn = null; //fcicq和这个数据库连接要说再见了。。。。
//但是!你可以:
$dbh = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2',
     array(PDO_ATTR_PERSISTENT => true)); //保持连接

很简单的不是?

附:特别简单的特殊调用方法:
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?");
if ($stmt->execute(array($_GET['name']))) { //你怕啥?自动quote!
  while ($row = $stmt->fetch()) {
    print_r($row);
  }
}

也可以:
$stmt->bindParam(1, $id);
$stmt->bindParam(2, $_FILES['file']['type']);
$stmt->bindParam(3, $fp, PDO::PARAM_LOB);

这么好的功能,哪里可以找到?php5.1以上在扩展里,php5在pecl里,php4?你别想了,没有。
联系作者fcicq: fcicqbbs at gmail dot com.
如果有问题,或者错误,均可联系。呵呵。
版权声明:非代码部分(含部分注释)原创,所有代码的均摘自手册
最后一句:喜悦首发,严禁转帖

                        fcicq 2006.7.6 21:33

[ 本帖最后由 qh663 于 2006-7-6 10:08 PM 编辑 ]




doc
2006-7-6 09:39 PM#1
查看资料  访问主页  发短消息  顶部
 
内存不足
新手上路
Rank: 1



UID 76020
精华 0
积分 14
帖子 22
金钱 14 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-7-6
状态 离线
[推荐阅读] 问一个双线路空间的问题,解决南北分流
偶反对,mysql_*是偶的最爱,搞成类了就不好玩了.
2006-7-6 10:20 PM#2
查看资料  发短消息  顶部
 
内存不足
新手上路
Rank: 1



UID 76020
精华 0
积分 14
帖子 22
金钱 14 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-7-6
状态 离线
[推荐阅读] 母校相片,要毕业时拍的,要是有兄弟是那个破学校毕业的出来吼一声~!
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?");
if ($stmt->execute(array($_GET['name']))) { //你怕啥?自动quote!
  while ($row = $stmt->fetch()) {
    print_r($row);
  }
}
这东西跟咱自己写的类有啥区别?

[ 本帖最后由 内存不足 于 2006-7-6 10:24 PM 编辑 ]
2006-7-6 10:22 PM#3
查看资料  发短消息  顶部
 
qh663
版主
Rank: 7Rank: 7Rank: 7
中级会员


UID 30020
精华 0
积分 546
帖子 580
金钱 546 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2004-7-13
来自 河源
状态 离线
[推荐阅读] 求助当天的浏览量代码怎么些
楼主让大家都了解一点php6了,随手将楼主的 Smilies禁用了下(代码部分会出现 Smilies)。
不会取消mysql吧,虽然mysqli在php5中存在了,但并不是默认支持的。新的数据操作虽然简单,必竟熟悉了以前的,新的不容易记。呵呵..




五百多篇PHP学习资料
喜悦村BLOG
php团队接兼职项目QQ:80031807
PHP群:768844
2006-7-6 10:23 PM#4
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
内存不足
新手上路
Rank: 1



UID 76020
精华 0
积分 14
帖子 22
金钱 14 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-7-6
状态 离线
[推荐阅读] 请问如何用正则把下面这段去掉
不喜欢这种风格,太像ASP中的那个ADO什么的了.

唉,还是脱离不了微软,看来我还是去学C++Builder的好,那东西至少几年内微软还动不了它.
2006-7-6 10:24 PM#5
查看资料  发短消息  顶部
 
sq1228
中级会员
Rank: 3Rank: 3
一般会员


UID 66008
精华 0
积分 267
帖子 239
金钱 267 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2005-8-19
来自 浙江宁波
状态 离线
[推荐阅读] 为什么我用GD生成的图片只能另存为BMP?
我觉得PHP6挺好的,关于mysql_*,取消就取消,我本来就没有在用,现在就不用在用体积肥大的adodb了,这不是更好!
2006-7-7 10:16 AM#6
查看资料  发短消息  QQ  顶部
 
fcicqbbs
注册会员
Rank: 2



UID 74804
精华 0
积分 96
帖子 110
金钱 96 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-6-10
状态 离线
[推荐阅读] 帮助跟我一样的小鸟理解MVC
这个东西是这样的.mysql,mssql,odbc.....,这些函数移动到PECL中,自己编译.PDO变为内置

***其余的参见(http://www.php.net/~derick/meeting-notes.html)***

这个pdo能支持这么多种数据库而不需要特别的改动代码,不是挺好的?
虽然偶现在还是用mysql_*多些,但偶的代码很接近这种写法了.

反正php5.0都可以支持这些东西,那就可以开始用pdo了.




doc
2006-7-7 11:08 AM#7
查看资料  访问主页  发短消息  顶部
 
fcicqbbs
注册会员
Rank: 2



UID 74804
精华 0
积分 96
帖子 110
金钱 96 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-6-10
状态 离线
[推荐阅读] 关于生成zip或rar文件
回3楼:
这个问号和printf差不多.
里面execute(array($_GET['name'])),就把$_GET['name']转义后直接带给第1个问号.很智能...
另外可以
select from abc where abc=? and def=?
execute(array($_GET['abc'],$_POST['def']))
都是自动的.




doc
2006-7-7 11:13 AM#8
查看资料  访问主页  发短消息  顶部
 
starDust
注册会员
Rank: 2



UID 72487
精华 0
积分 135
帖子 153
金钱 135 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-4-28
状态 离线
[推荐阅读] 一个PHP5连接远程MYSQL5的奇怪问题
我用pear::DB_QueryTool



原来是基因改造了世界
2006-7-7 11:32 AM#9
查看资料  发短消息  顶部
 
fcicqbbs
注册会员
Rank: 2



UID 74804
精华 0
积分 96
帖子 110
金钱 96 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-6-10
状态 离线
[推荐阅读] 借宝地发个招聘信息。【北京的】
到时pear的内部代码也要重写.哈哈.不过影响不到楼上了.



doc
2006-7-7 01:41 PM#10
查看资料  访问主页  发短消息  顶部
 48  1/5  1  2  3  4  5  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 


Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.027233 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP