PDO中命名参数的具体命名规则有哪些?
PDO 命名参数规则与匹配方案
规则归属
PDO 命名参数的规则分为两层,不存在全场景通用的统一标准:
- 基础规则由 PDO 核心层定义
- 额外限制由你使用的数据库驱动(此处为 PDO_OCI 适配 Oracle 场景)叠加数据库本身的标识符规则决定
明确可落地的规则细节
PDO 核心通用要求
- 命名参数固定以半角冒号
:作为开头标识 - 冒号后的参数名仅允许使用英文字母、数字、下划线三类字符,不支持任何特殊符号、空白字符、非拉丁字符
- 参数名必须以英文字母开头,不能以数字或下划线作为首字符
- PDO 核心层没有对参数名长度做强制限制
Oracle 场景额外限制
- 参数名最大长度为 30 个字符,超出长度会触发绑定失败
- 参数名大小写不敏感(Oracle 默认会将标识符转为大写存储,PDO 绑定时不会校验大小写,建议统一用小写避免不必要的兼容问题)
匹配用正则表达式
适配 Oracle 场景的精准匹配正则:/:[a-zA-Z][a-zA-Z0-9_]{0,29}/
如果是通用 PDO 场景无需兼容 Oracle,可以放宽长度限制,正则改为:/:[a-zA-Z][a-zA-Z0-9_]+/
注:上述正则可以避免误匹配 SQL 中其他带冒号的语法片段,比如时间格式、类型转换标记等。
内容的提问来源于stack exchange,提问作者I wrestled a bear once.
相关产品推荐
相关产品推荐

