【发布时间】:2009-08-02 11:30:23
【问题描述】:
我正在开发一个小型 PHP 网站。我需要一个易于配置和使用的 MySql 数据库访问类。
不需要是一个完整的框架,我只需要一个最大值。几节课。
【问题讨论】:
-
从 Zend 框架中,您真的可以随心所欲。甚至只有 Zend_Db!当然还有一个 mysql pdo 适配器。
我正在开发一个小型 PHP 网站。我需要一个易于配置和使用的 MySql 数据库访问类。
不需要是一个完整的框架,我只需要一个最大值。几节课。
【问题讨论】:
PDO 对我来说非常有用,即使它不像 PEAR::MDB2 那样完全成熟的库。
PDO 是 PHP5 的编译扩展,因此也有一点性能优势。
【讨论】:
ADODb 很容易使用,值得考虑。一些说明性示例:
//connect
$dsn = 'mysql://user:pwd@localhost/mydb';
$db = ADONewConnection($dsn);
//get a single value
$value=$db->GetOne("select foo from bar where x=?", array($x));
//get a row
$row=$db->GetRow("select * from bar where x=?", array($x));
//easy insert example
$record=array("id"=>1, "foo"=>"bar");
$db->AutoExecute("table", $record, "INSERT");
【讨论】:
如果您对它特定于 MySql 感到满意,MySqli 是默认选择。
【讨论】:
我认为PEAR::MDB2 是您正在寻找的。p>
【讨论】:
如果您没有真正的特殊需求,我建议您查看PDO,它与 PHP >= 5.1 捆绑在一起。
它完全面向对象,便于数据库引擎之间的兼容性;并且它作为 C 扩展集成在 PHP 中,可能比在 PHP 中开发的等价物要快一些。
您还可以查看mysqli 扩展,它提供了面向函数和面向对象的接口。
但我想我更愿意去 PDO,我想......
而且,既然您正在花费(投资 ;-))一些时间寻找新东西,您可以查看准备好的语句:mysqli 和 PDO 都支持它们,并且非常适合(除其他外) ) 安全原因(无需担心转义数据以防止 SQL 注入)
如果你说你需要一个完整的 ORM 解决方案,我会指给你Doctrine,这确实是一个很棒的 ORM 框架;但这可能对您的需求来说太过分了......
【讨论】:
您可以从Zend Framework 尝试Zend_Db。稍后您可能会包含来自 ZF 的模式组件。
【讨论】:
我偶尔用过this,还不错! (并且有一个很棒的自动斜线功能),它很容易定制而且很小,但它有我需要的一切。您可能可以相对容易地扩展它以支持缓存或任何您想要的。
祝你好运找到最适合你的东西。 :)
【讨论】:
还有 digg 的 PDB,它是一个简单的 PDO 包装器或者可以从 http://code.google.com/p/digg/wiki/PDB 下载的东西
【讨论】:
最简单轻量级的db类是
http://code.google.com/p/edb-php-class/
<?php
$result = $db->q("select * from `users`limit 3");
foreach($result as $a){
$a = (object) $a;
echo $a->id.' '.$a->name.' '.$a->url.' '.$a->img.'</br>';
}
$result = $db->line("select * from `users` where id = '300' limit 1");
echo $result['name'];
echo $result['surname'];
$name = $db->one("select name from `ilike_pics` where id = '300' limit 1");
echo $name;
?>
【讨论】:
+1 用于 PHP 的 PDO(PHP 数据对象)扩展。我将它与一个非常方便的扩展 PDO 的数据库类一起使用。您可以在 Google 的 Project Hosting 上找到这个开源项目,地址为 http://code.google.com/p/php-pdo-wrapper-class。
【讨论】:
我建议使用PHP-MySQLi-Database-Class,它利用 MySQLi 和准备好的语句(这意味着您将免受 SQL 注入)。类有据可查。
【讨论】: