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

jackxiang 2006-10-25 23:04 | |
先展望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?你别想了,没有。

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/288/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]