php – SQL的扩展占位符,例如WHERE id IN(??)

前端之家收集整理的这篇文章主要介绍了php – SQL的扩展占位符,例如WHERE id IN(??)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
赏金更新:马克已经得到了非常好的答案.改编为:进入:,在下面.不过,除了DBIx,我还在寻找类似的方案.我只想兼容任何东西.

我需要关于在参数化sql语句中为“扩展”占位符选择的语法提供建议.因为构建一些构造(IN子句)会阻碍我,所以我决定了一些自动扩展成普通的语法快捷方式?占位符.
我喜欢他们.但是我想把它打包出来,要问自己是否容易理解.

基本上我的新占位符是?和:? (枚举参数)和:&和:和:|和::(用于命名占位符)具有以下用例:

-> db("  SELECT * FROM all WHERE id IN (??)  ",[$a,$b,$c,$d,$e])

的??根据我的db()func的$args的数量扩展为?,?,….这一个很清楚,它的语法已经被标准化了. Perls DBIx :: Simple也使用它.所以我很确定这是一个可以接受的想法.

-> db("  SELECT :? FROM any WHERE id>0   ",["title","frog","id"]);
// Note: not actually parameterized attr,needs cleanup regex

承认它我只是喜欢笑脸.基本上这个:占位符将一个关联的$args扩展为纯列名.事实上,它抛出任何$args值.对于INSERT与??结合使用,有时候对于IN子句是非常有用的.但是在这里我已经想知道这个新语法是否合理,或者不仅仅是一个俗名,因为它混合在一起?字符.但不知何故似乎匹配的语法方案很好.

-> db("  UPDATE some SET :,WHERE :& AND (:|)   ",$row,$keys,$or);

这里的助记符:扩展为name =:名称对的列表,用逗号分隔.而&是由ANDs加入的column =:列列表.为了平价,我补充说:|. :&但是在UPDATE命令中还有其他用例.
但是我的问题不在于有用性,而是:和:&似乎是可以记住的?

-> db("  SELECT * FROM all WHERE name IN (::)  ",$assoc);

有些虽然我也添加::内插一个:named,:value,:list非常像??扩展到?,?类似的用例,并且具有统一性.

无论如何,有没有人实行这样的计划?不同的占位符?或者你会推荐简单吗?更新:我知道PHP Oracle OCI接口也可以绑定数组参数,但不使用特定的占位符.我正在寻找类似的占位符语法.

您可能希望避免使用:=作为占位符,因为它已经是 has a usage,例如MysqL.

参见例如this answer的现实世界的使用.

原文链接:https://www.f2er.com/php/133010.html

猜你在找的PHP相关文章