如果我有一个查询,例如SELECT * from authors where name = @name_param
,是否有正则表达式来解析参数名称(特别是“name_param”)?
Thanks
这很棘手,因为参数也可能出现在带引号的字符串内。
SELECT * FROM authors WHERE name = @name_param
AND string = 'don\'t use @name_param';
正则表达式如何知道使用第一个@name_param
但不是第二个?
这是一个可以解决的问题,但用单个正则表达式来解决它是不切实际的。我必须在 Zend_Db 中处理这个问题,我所做的就是首先删除所有带引号的字符串和分隔标识符,然后您可以对其余部分使用正则表达式。
您可以看到代码,因为它是开源的。
查看功能_stripQuoted()
and _parseParameters()
.
https://github.com/zendframework/zf1/blob/136735e776f520b081cd374012852cb88cef9a88/library/Zend/Db/Statement.php#L200
https://github.com/zendframework/zf1/blob/136735e776f520b081cd374012852cb88cef9a88/library/Zend/Db/Statement.php#L140
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)