在编写脚本时,我不断地输入$ db-> prepare()和$ stmt-> bindParam()。我正在寻找一种将所有功能整合在一起的方法。这是我迄今为止所拥有的。尝试为PDO创建查询函数
$sql = "SELECT (name, email) FROM users WHERE VALUES (:name, :email)"
$values = array(':name' => 'my_name', ':email' => '[email protected]',);
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'fetchAll'' fetchOne',但我也只是用自己的包装器来扩展PDO类,所以我不必惹全球业务。 :)最好的方式来看看它是否足够和工作...是测试它,看看。 –
+1这里是非常罕见的问题。 –