php - 什么是处理 PHP 应用程序到 SQL 数据库的良好包装器/框架/库?

标签 php mysql sql frameworks

我有一张 table

$query=
"CREATE TABLE screenshot ".
"(screenshot_id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, ".
"source_video_id INT UNSIGNED NOT NULL, ".
"screenshot_file_name VARCHAR(128), ".
"x_res INT, ".
"y_res INT, ".
"time INT UNSIGNED);";
mysql_query($query);

然后我将东西插入到那个表中。

我经常想做一个 SQL 查询并迭代查询的结果,但最终还是这样做了。

//select all screenshots from video, by video id
    $q0=
    "SELECT * FROM screenshot ".
    "WHERE source_video_id = '$source_video_id' ".
    "AND x_res = 120 ".
    "AND y_res = 90 ".
    "ORDER BY time ASC;";
    $r0 = mysql_query($q0);
    $n0_num = mysql_numrows($r0);

//for each result
for($n0=0;$n0<$n0_num;$n0++) {
    $source_video_id = mysql_result($r0,$n0,'source_video_id');
    $time = mysql_result($r0,$n0,'time');
    $screenshot_file_name = mysql_result($r0,$n0,'screenshot_file_name');

    //do stuff for each returned result!
}

这太丑了。要获得 SQL 查询结果,我必须为每一列都写这个! $source_video_id = mysql_result($r0,$n0,'source_video_id');

我必须编写一个丑陋的循环,获取返回的每一行的结果并为每个结果做一些事情。基本上我想要类似的东西;

foreach($SQL_command) {
//Do for each result
}

我希望每一行的列变量都已经设置好,这样我就不必这样做了

$source_video_id = mysql_result($r0,$n0,'source_video_id');

对于我想要访问的每一列!

我厌倦了编写样板代码来为我数据中的每个表执行此操作。是否有任何框架或库可以减轻这种痛苦?

最佳答案

这些是 database abstraction layer 的基础知识.自己编写程序并不难,或者您可以使用像 Doctrine 这样的通用库。或 Propel . Every notable PHP framework还包括某种形式的数据库抽象,您真的只需要开始使用一个。

关于php - 什么是处理 PHP 应用程序到 SQL 数据库的良好包装器/框架/库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3262194/

相关文章:

mysql - 将两个sql连接变成双连接?可能的?

PHP 将从 BLOB 而不是从 MySQL 表中的 LONGBLOB 生成 jpg 图像

mysql - 我想对第 1 列和第 2 列求和,并用该总和替换第 1 列的值

PHP:有没有办法获取方法的返回类型?

mysql - 选择单个字段中 Y 与 N 的比率大于 75% 的不同值

mysql - 为什么 Doctrine 2 迁移在 Symfony 项目中悄无声息地失败了?

mysql - 如何查找另一个表中不存在的内容?

sql - 如何让查询更快?

php - 在 PHP 中按对象 ID 对数组进行排序

php - 什么是 ? : in PHP 5. 3?