PHP数据库操作类 - ezSQL

ezSQL 下载地址://sjolzy.cn/php/ezSQL/bak/ez_sql_2.05.zip

新版本是2.05添加了很多支持,包括 CodeIgniter,MSSQL, PDO等等。

查看示例:

Example 1
----------------------------------------------------

// Select multiple records from the database and print them out..
$users = $db->get_results("SELECT name, email FROM users");
foreach ( $users as $user ) {
            // Access data using object syntax
            echo $user->name;
            echo $user->email;
}

Example 2
----------------------------------------------------

// Get one row from the database and print it out..
$user = $db->get_row("SELECT name,email FROM users WHERE id = 2");
echo $user->name;
echo $user->email;

Example 3
----------------------------------------------------

// Get one variable from the database and print it out..
$var = $db->get_var("SELECT count(*) FROM users");
echo $var;

Example 4
----------------------------------------------------

// Insert into the database
$db->query("INSERT INTO users (id, name, email) VALUES (NULL,'justin','jv@foo.com')");

Example 5
----------------------------------------------------

// Update the database
$db->query("UPDATE users SET name = 'Justin' WHERE id = 2)");

Example 6
----------------------------------------------------

// Display last query and all associated results
$db->debug();

Example 7
----------------------------------------------------

// Display the structure and contents of any result(s) .. or any variable
$results = $db->get_results("SELECT name, email FROM users");
$db->vardump($results);

Example 8
----------------------------------------------------

// Get 'one column' (based on column index) and print it out..
$names = $db->get_col("SELECT name,email FROM users",0)
foreach ( $names as $name ) {
    echo $name;
}

Example 9
----------------------------------------------------

// Same as above ‘but quicker’
foreach ( $db->get_col("SELECT name,email FROM users",0) as $name ) {
    echo $name;
}

Example 10
----------------------------------------------------

// Map out the full schema of any given database and print it out..
$db->select("my_database");
foreach ( $db->get_col("SHOW TABLES",0) as $table_name ) {
    $db->debug();
    $db->get_results("DESC $table_name");
}
$db->debug();

 

php的pconnect()

PHP在连结MYSQL时有两个FUNCTION
CONNECT与PCONNECT
这两个函式的差别在哪裡?
一般的标准答桉都是:
PCONNECT是持续性的连接,PHP会重複使用已经存在的资料库连线


但是再追问下去,能说得出来的人就少了许多
常见的疑问有:
什麽时候要用CONNECT什麽时候用PCONNECT?
mysql_close何时使用?
为什麽DATABASE上有一堆SLEEP的PROCESS?
明明用PCONNECT为何每次RESOURCE ID都不同?

先回归到最简单的解释,pconnect会去检查是否有已经存在的资料库连线。
若有,就使用旧的连线;若无,就新开启一个连线
但是这裡所说得检查连线,是指这一个APACHE行程所开启的资料库连线
而不是这一台WEB SERVER所开启的资料库连线。
一台WEB SERVER上可能有上百个APAHE行程(2.0预设最大150个)
也就是说 在最大情况下可能会有上百个PCONNECT造成的资料库连线
(实际上会远少于此)
所以同样使用PCONNECT是会出现不同RESOURCE ID的
因为他可能是在不同行程上面执行

而PCONNECT是不会在查询完成后就关闭,而是会等待一定时间
这个时间可以由MYSQL上的wait_timeout设定
而且mysql_close并无法关闭pconnect所开启的连线,只能关闭connect所开启的资料库连线。当然如果没有CLOSE在经过TIMEOUT时间之后也是会被DB DROP掉。

PCONNECT必须要小心使用,在写的不好的CODE中,会残留一大批的DATABASE CONNECTION。最大值可以这样计算
每台SERVER的APACHE行程数 * 所有WEB SERVEWR数量
当然不需要我来提醒,每个连线都会消耗DB的CPU TIME与MEMORY

写WEB CODE时,不论使用何种语言,有两点一定要再动手写之前先有答桉
一是,要从DATABASE抓取什麽资料
二是,要传送什麽资料到USER端
(其实这也不只用于WEB)
DATABASE的连线是很慢的,能够一次抓取完所需的资料,就不要分两次。