php6展望 && PDO的使用

作者: aries 分类: PHP 发布时间: 2007-06-13 17:46 ė 3332次浏览 6 0评论

先展望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.

如果有问题,或者错误,均可联系。呵呵。

版权声明:非代码部分(含部分注释)原创,所有代码的均摘自手册

最后一句:喜悦首发,严禁转帖

0 php6
换一个
暂无评论
Ɣ回顶部