如何在PDO中使用数组插入/更新?

时间:2014-08-31 04:24:47

标签: php mysql pdo

我是PDO的新手,并不完全确定我是否在正确的地方/方式寻找我想要的用法。

PDO看起来非常好但我发现这种代码相当长,并且不想在我运行的每个查询中使用它:

$sth = $database->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour');
$sth->execute(array(':calories' => $calories, ':colour' => $colour));

我宁愿使用这样的东西:

$array = 
 'calories' => $calories,
 'colour' => $colour
);
$db->insert("fruit", $array);

(类似地,我想进行更新调用,我希望这适用于每个插入/更新,以便将键名作为表中的字段,并将值作为要插入/更新的值)。

我的价值观是:

  • 在我自己的脚本中使用最少的代码,只使用数组并在其他地方处理PDO语句(包括错误捕获)。
  • 仍然利用PDO附带的预处理语句和面向对象编程。

我找到了许多答案,但他们提出了许多不同类型的解决方案,包括:

总而言之,似乎有很多选择,但我不知道最推荐的方式是出于我的目的,甚至是具体的差异。

请照亮我:我应该在这里寻找什么和哪里?!

2 个答案:

答案 0 :(得分:0)

有许多系统可以消除常规查询并用更高级别的代码替换它们。

一种是使用PropelDoctrine等ORM。

更好的方法是使用像development framework这样的完整Laravel,它不仅可以帮助您解决数据库查询问题。大多数应用程序需要考虑HTML转义,XSS保护,URL映射,身份验证,会话管理等。自己写这篇文章既困难又容易出错。

答案 1 :(得分:0)

正如在其他答案中提到的那样,做这件事的温和方法是在你的案件中使用一些也支持pdo的orm。

例如学说。它非常复杂和强大。如果你想使用一些轻量级但功能齐全的orm,可以选择。

例如db.php(http:\ dbphp.net),并且还要查看该框架的最简单的使用演示https://github.com/hazardland/db.php/blob/master/samples/001.showcase.php