什么是处理PHP应用程序与SQL数据库接口的好包装器/框架/库?

什么是处理PHP应用程序与SQL数据库接口的好包装器/框架/库?,php,mysql,sql,frameworks,Php,Mysql,Sql,Frameworks,我有一张桌子 $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=
"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!
}
我希望每行的列变量都已经设置好,这样我就不必这样做了

$source_video_id = mysql_result($r0,$n0,'source_video_id');
对于我想访问的每一列


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

这些是一个应用程序的基础。编写自己的程序并不难,也可以使用或之类的通用库。还包括某种形式的数据库抽象,您真的只需要开始使用它。

这些是数据库抽象的基础。编写自己的程序并不难,也可以使用或之类的通用库。还包括某种形式的数据库抽象,您真的只需要开始使用它。

如果您启用了PDO驱动程序(您应该这样做),您可以使用单个
DB()
方法作为来自的函数。它的灵感来自。文件编制仍在进行中,但是

您的示例查询可以写成:

// connect to the MySQL server, do this on your config file or something
DB('mysql://host:port/database_name/', 'username', 'password');

// run the query!
$results = DB('SELECT * FROM screenshot WHERE source_video_id = ? AND x_res = ? AND y_res = ? ORDER BY time ASC;', $source_video_id, 120, 90);

foreach ($results as $result)
{
    print_r($result);
}
上面的代码使用预先准备好的查询,这意味着您也可以安全地进行查询


PS:我在这里有偏见,因为我是框架的开发者。如果您遇到任何问题,请告诉我。

如果您启用了PDO驱动程序(如您应该启用的),您可以使用单个
DB()
方法作为来自的函数。它的灵感来自。文件编制仍在进行中,但是

您的示例查询可以写成:

// connect to the MySQL server, do this on your config file or something
DB('mysql://host:port/database_name/', 'username', 'password');

// run the query!
$results = DB('SELECT * FROM screenshot WHERE source_video_id = ? AND x_res = ? AND y_res = ? ORDER BY time ASC;', $source_video_id, 120, 90);

foreach ($results as $result)
{
    print_r($result);
}
上面的代码使用预先准备好的查询,这意味着您也可以安全地进行查询


PS:我在这里有偏见,因为我是框架的开发者。如果你遇到任何问题,请告诉我。

可以假设我是科哈纳的粉丝,但我真的很喜欢这件事。拿一把叉子,把它放在那里(这是一把来自原始小枝ORM的叉子,但是加了额外的‘糖’:)而不是本地科哈纳的叉子。你会明白他们在一起有多美。您可以访问表,如下代码所示:

//just the basics, updating existing record
$screenshot = Sprig::factory('Screenshot', $id)->load();
$screenshot->x_res = 240;
$screenshot->y_res = 260;
$screenshot->update();

//creating new one
$screenshot = Sprig::factory('Screenshot');
$screenshot->x_res = 300;
$screenshot->y_res = 250;
$screenshot->create();
有关弹簧叉讨论的附加链接:


希望,这会对你有所帮助。

有人会认为我是科哈纳的粉丝,但我真的很喜欢这件事。拿一把叉子,把它放在那里(这是一把来自原始小枝ORM的叉子,但是加了额外的‘糖’:)而不是本地科哈纳的叉子。你会明白他们在一起有多美。您可以访问表,如下代码所示:

//just the basics, updating existing record
$screenshot = Sprig::factory('Screenshot', $id)->load();
$screenshot->x_res = 240;
$screenshot->y_res = 260;
$screenshot->update();

//creating new one
$screenshot = Sprig::factory('Screenshot');
$screenshot->x_res = 300;
$screenshot->y_res = 250;
$screenshot->create();
有关弹簧叉讨论的附加链接:

希望,它能帮助您。

我在所有项目中都使用它,并会毫不犹豫地推荐它。主要原因是:

  • 所需的最低配置。我不必将数据库模式映射到YAML或JSON文件中,只需输入连接参数即可
  • 优雅且易于理解的用法语法
  • 许多特性,例如缓存和树关系
  • 表现不错
下面是一个使用它的示例:

$book = R::dispense('book');
$book->title = 'Gifted Programmers';
$book->author = 'Charles Xavier';
$id = R::store($book);
我在我所有的项目中都使用它,并会毫不犹豫地推荐它。主要原因是:

  • 所需的最低配置。我不必将数据库模式映射到YAML或JSON文件中,只需输入连接参数即可
  • 优雅且易于理解的用法语法
  • 许多特性,例如缓存和树关系
  • 表现不错
下面是一个使用它的示例:

$book = R::dispense('book');
$book->title = 'Gifted Programmers';
$book->author = 'Charles Xavier';
$id = R::store($book);

将结果分配给数组
mysql\u fetch\u array($result)
将结果分配给一个数组<代码>mysql\u获取\u数组($result)