我試圖實現一個非常簡單的PDO bindValue()函數。 (只作教育用途)PHP - 替換完全匹配preg_replace
因此,首先在 「前端」 的代碼,我有一個SQL查詢是這樣的:
INSERT INTO logs VALUES (:referer, :id_cookie, :id_cookie_com);
而且我的代碼看起來像這樣:
$stmt->bindValue(':referer', 'test');
$stmt->bindValue(':id_cookie', 'test2');
$stmt->bindValue(':id_cookie_com', 'test3');
我正在分解我的查詢,並獲取以數組中以「:」開頭的所有參數,這很好。
Array
(
[0] => :referer
[1] => :id_cookie
[2] => :id_cookie_com
)
但是,當我嘗試替換查詢中的參數,我面臨一個小問題。
如果我這樣做:
public function bindParam($parameter, $variable, $type = null)
{
$this->sql = preg_replace('/'.$parameter.'/', $variable, $this->sql);
}
我得到這個結果:
INSERT INTO logs VALUES (test, test2, test3_com)
我不能設法去除_com在查詢結束。我知道爲什麼它在這裏,這是因爲我的preg_replace,匹配我的數組中的id_cookie,而且我必須以id_cookie開頭的變量。
我該如何設法使preg_replace()替換整個單詞?
無法複製:https://eval.in/207173 – 2014-10-17 13:32:36
在你的榜樣,我想你複製它: 'INSERT INTO日誌VALUES(:引用者,TEST2,test2_com );' – Kikndanutz 2014-10-17 13:54:38
哈哈哈,謝謝@Kikndanutz!完全錯過了 – 2014-10-17 13:58:59