我打算使用 PDOprepare()
and execute()
防止SQL注入攻击的机制。
通常,SQL 中的占位符位于条件部分。
例如select name, age from members where age > ? and gender = 'f';
但是,是否可以在选择部分中放置占位符?
select name, age, ? from members where age > ? and gender = 'f';
我知道我不能在那里放置列名,但是我可以放置常量吗?喜欢
select name, age, 'foo' from members where age > ? and gender ='f';
Thanks.
没有。 PDO 无法清理列名或表名。
如果你真的have要使用动态表名,处理它们的最安全方法是不检查它们是否实际存在于表中,并以正常方式将它们插入到查询中。
伪代码:
$fieldname = make_sure_this_field_really_exists($_GET["fieldname"]);
$PDO->prepare("select name, age, `$fieldname` from members where age > ? and gender = 'f';" ... );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)