【发布时间】:2021-06-04 05:13:03
【问题描述】:
我有一个使用命名占位符的 SQL 查询,以及一个包含相应键和值的关联数组。
INSERT INTO table1 (a, b, c) VALUES (:a, :b, :c)
[
'a' => 'ValueA',
'c' => 'ValueC',
'b' => 'ValueB'
]
现在我需要将查询和相应的参数转换为使用未命名(问号)。
INSERT INTO table1 (a, b, c) VALUES (?, ?, ?)
[
0 => 'ValueA',
1 => 'ValueB',
2 => 'ValueC'
]
我怎样才能做到这一点,而不会冒着参数顺序错误的风险?
【问题讨论】:
-
除了“确保以正确的顺序传递它们”之外,您希望得到什么样的答案?您是否正在考虑以编程方式编辑所有查询的大规模更改?
-
我需要以与其他系统(不支持命名占位符)兼容的方式存储 SQL 查询和参数。但我仍然想在代码中使用命名占位符,以提高可读性并最大限度地减少意外以错误顺序提供参数的风险。不幸的是,并非所有系统都支持它们。
标签: php pdo prepared-statement