加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 16:01:22 所属栏目:PHP教程 来源:网络整理
导读:赏金更新:马克已经得到了非常好的答案.改编为:进入:,在下面.不过,除了DBIx,我还在寻找类似的方案.我只想兼容任何东西. 我需要关于在参数化SQL语句中为“扩展”占位符选择的语法提供建议.因为构建一些构造(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的现实世界的使用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读