我试图实现一个非常简单的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