版本控制
Drizzle扩展还带有许多能提供与当前Drizzle客户端、服务器以及协议的版本有关的信息的函数。把它与Drizzle的information_schema数据库里的信息结合起来可以让我们更清楚地看到Drizzle服务器内部到底是如何运作的。下面有一个示例:
- < html>
- < head>
- < style type="text/css">
- table,tr,td {
- border: solid 1px black;
- border-collapse: collapse;
- padding: 5px;
- }
- < /style>
- < /head>
- < body>
- < h2>Databases and Tables< /h2>
- < ?php
- // set connection parameters
- $host = 'localhost';
- $port = 4427;
- $user = 'root';
- $pass = 'guessme';
- $db = 'information_schema';
- // create drizzle object
- $drizzle = new drizzle();
- // connect to database server
- $conn = $drizzle->addTcp($host, $port, $user, $pass, $db, 0)
- or die('ERROR: ' . $drizzle->error());
- // get database list
- $sql = 'SELECT SCHEMA_NAME FROM SCHEMATA';
- $result = @$conn->query($sql)
- or die('ERROR: ' . $conn->error());
- // buffer result set
- $result->buffer()
- or die('ERROR: ' . $conn->error());
- // print results
- if ($result->rowCount()) {
- while (($row = $result->rowNext())) {
- echo '< h3>' . $row[0] . '< /h3>';
- // get table list
- $sql2 = "SELECT TABLE_NAME, ENGINE, TABLE_ROWS FROM TABLES WHERE TABLE_SCHEMA='" . $row[0] . "'";
- $result2 = @$conn->query($sql2)
- or die('ERROR: ' . $conn->error());
- // buffer result set
- $result2->buffer()
- or die('ERROR: ' . $conn->error());
- // print results
- if ($result2->rowCount()) {
- echo '< table>';
- while (($row2 = $result2->rowNext())) {
- echo '< tr>';
- echo '< td>'. $row2[0] . '< /td>';
- echo '< td>'. $row2[1] . '< /td>';
- echo '< td>'. (int)$row2[2] . ' rows< /td>';
- echo '< /tr>';
- }
- echo '< /table>';
- }
- }
- } else {
- echo 'No records found';
- }
- ?>
- < h2>Client and Server Information< /h2>
- < ?php
- // get version and host information
- echo "Client version: " . $drizzle->version() . "< br />";
- echo "Server version: " . $conn->serverVersion() . "< br />";
- echo "Protocol version: " . $conn->protocolVersion() . "< br />";
- ?>
- < h2>Server Status< /h2>
- < ?php
- // get global variables
- $sql3 = 'SELECT * FROM GLOBAL_STATUS';
- $result3 = @$conn->query($sql3)
- or die('ERROR: ' . $conn->error());
- // buffer result set
- $result3->buffer()
- or die('ERROR: ' . $conn->error());
- // print results
- if ($result3->rowCount()) {
- echo '< table>';
- while (($row3 = $result3->rowNext())) {
- echo '< tr>';
- echo '< td>'. $row3[0] . '< /td>';
- echo '< td>'. $row3[1] . '< /td>';
- echo '< /tr>';
- }
- echo '< /table>';
- }
- // close connection
- $conn->close();
- // deinitialize object
- unset($drizzle);
- ?>
- < /body>
- < /html>
这段脚本通过查询information_schema这个特殊的数据库来获取这台服务器上的数据库和表的信息,此外还可以获取到全局状态变量的值,比如服务器的运行时间、连接的线程数量、已开打的表格数等。它还示范了version(),serverVersion(),以及protocolVersion()方法,它们分别返回Drizzle客户端、服务器和协议的版本号。
下面是这段代码的一些输出截图:
Drizzle 扩展还提供了许多能帮你处理连接错误、查询错误的函数。drizzle_error()和drizzle_error_code()函数返回上一次数据库连接所产生的错误信息和错误代码,而drizzle_con_error()和drizzle_con_error_code()函数返回上一次查询所产生的的错误信息和错误代码。当然,这些函数也有相应的面向对象接口,你可以看看之前的例子看看它们是如何使用的。
我要介绍的内容就是这些了。在前面几页里,我介绍了Drizzle这个新兴的、轻量的、为云应用特别设计的MySQL分支,并演示了在PHP应用程序里使用它是多么简单的事情。虽然Drizzle PHP扩展更不用说Drizzle本身)还在开发阶段,但是它仍然已经提供了非常全面的API来执行查询语句、检查结果集、处理错误。有空的时候试试它吧,再与我分享一下你的使用感受!
原文:Getting Started with Drizzle and PHP
作者:Vikram Vaswani
- PHP实现的MySQL读写分离
- MySQL将采用新的开发和发布模式
- MySQL 5.1.35发布 针对Windows平台修复多项Bug
- MySQL数据库行将消亡?靠Oracle抢救或自救
- 四分五裂的MySQL能否重整山河?
PHP之友评论