Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 可以使用PDO将占位符放在查询的select部分吗?_Php_Mysql_Pdo - Fatal编程技术网

Php 可以使用PDO将占位符放在查询的select部分吗?

Php 可以使用PDO将占位符放在查询的select部分吗?,php,mysql,pdo,Php,Mysql,Pdo,我计划使用PDO的prepare()和execute()机制来防止SQL注入攻击 SQL中的占位符通常位于条件部分 比如说 从年龄>所在的成员中选择姓名、年龄>?性别='f' 但是,是否可以在“选择零件”中放置占位符 选择姓名、年龄、?来自年龄>的成员?性别='f' 我知道我不能把列名放在那个里,但我能把常数放在那个里吗?像 从年龄>所在的成员中选择姓名、年龄、'foo'?和性别='f' 谢谢。没有。PDO无法清理列或表名 如果必须使用动态表名,最安全的处理方法是不检查它们是否确实存在于表中,并

我计划使用PDO的
prepare()
execute()
机制来防止SQL注入攻击

SQL中的占位符通常位于条件部分

比如说
从年龄>所在的成员中选择姓名、年龄>?性别='f'

但是,是否可以在“选择零件”中放置占位符

选择姓名、年龄、?来自年龄>的成员?性别='f'

我知道我不能把列名放在那个里,但我能把常数放在那个里吗?像

从年龄>所在的成员中选择姓名、年龄、'foo'?和性别='f'


谢谢。

没有。PDO无法清理列或表名

如果必须使用动态表名,最安全的处理方法是不检查它们是否确实存在于表中,并以正常方式将它们插入查询中

伪代码:

$fieldname = make_sure_this_field_really_exists($_GET["fieldname"]);    
$PDO->prepare("select name, age, `$fieldname` from members where age > ? and gender = 'f';" ... );

我想你问是因为你试过了,但收到了一条错误信息。你也应该提到这一点。