在編寫腳本時,我不斷地輸入$ 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這裏是非常罕見的問題。 –