【发布时间】:2011-11-02 04:02:45
【问题描述】:
在编写脚本时,我不断地输入 $db->prepare()'s 和 $stmt->bindParam()'s。我正在寻找一种将其整合到一个函数中的方法。这是我目前所拥有的。
$sql = "SELECT (name, email) FROM users WHERE VALUES (:name, :email)"
$values = array(':name' => 'my_name', ':email' => 'blahblah@example.com', );
function db_query($sql, $values) {
global $db; //Database object
$stmt = $db->prepare($sql);
foreach($values as $placeholder => $value) {
$stmt->bindParam($placeholder, $value);
}
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $result;
}
这对于大多数查询是否足够?这是一种安全的方法吗?
我只想让查询运行并返回它返回的任何内容(NULL、值、错误等...)。
谢谢。
【问题讨论】:
-
你不能用
$stmt->execute($values);替换那个foreach循环吗? -
应该够用,只要能用就行。为您将要执行的每个项目编写一些测试用例,获取/插入/删除/更新。我倾向于让“查询”是一个实际的查询,并编写一个单独的函数来获取 IE
fetchAllfetchOne,但我也只是用我自己的包装器扩展 PDO 类,所以我不必搞砸全球业务。 :) 查看它是否足够且有效的最佳方法......是测试它并查看。 -
+1 表示这里的问题非常罕见。
-
Brad,fetch 和 fetchall 是从查询中获取结果的仅有的两种方法吗?感谢您的帮助