【发布时间】:2014-10-17 13:25:18
【问题描述】:
我正在尝试实现一个非常简单的 PDO bindValue() 函数。 (仅用于教育目的)
所以,首先在“前端”代码中,我有一个这样的 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() 替换整个单词?
【问题讨论】:
-
无法复制:eval.in/207173
-
在你的例子中,我认为你复制了它:
INSERT INTO logs VALUES (:referer, test2, test2_com); -
哈哈哈,谢谢@Kikndanutz!完全错过了
标签: php regex preg-replace