Zend framework Zend\db\sql-prepareStatementForSqlObject-仍然需要绑定或担心sql注入?
我在Zend\db\sql中使用ZF2.4和本例。如果我已经使用了prepareStatementForSqlObject(),我需要担心sql注入还是仍然需要执行quote()或转义操作?下面的示例将执行盲变量吗Zend framework Zend\db\sql-prepareStatementForSqlObject-仍然需要绑定或担心sql注入?,zend-framework,zend-db,zend-db-select,Zend Framework,Zend Db,Zend Db Select,我在Zend\db\sql中使用ZF2.4和本例。如果我已经使用了prepareStatementForSqlObject(),我需要担心sql注入还是仍然需要执行quote()或转义操作?下面的示例将执行盲变量吗 Select类将巧妙地检查谓词,并以安全的方式将它们添加到查询中,以防止SQL注入。我建议您亲自查看源代码,以便在最新的ZF版本中为您指出负责此操作的流程和类 谓词处理 看看这门课。方法\Zend\Db\Sql\Predicate::addPredicates根据谓词的类型确定处理
Select
类将巧妙地检查谓词,并以安全的方式将它们添加到查询中,以防止SQL注入。我建议您亲自查看源代码,以便在最新的ZF版本中为您指出负责此操作的流程和类
谓词处理看看这门课。方法
\Zend\Db\Sql\Predicate::addPredicates
根据谓词的类型确定处理谓词的最佳方法。在本例中,您使用的是关联数组。将根据类型检查和处理该数组中的每个项目:
- 如果找到一个抽象替换字符(问号),它将变成一个
表达式
- 如果值为
,则将对键中的列执行is NULL检查:NULL
其中键为NULL
- 如果该值是一个数组,则将对键中的kolumn执行IN检查:
WHERE键IN(arrayVal1,arrayVal2,…)
- 否则,谓词将是一个新的
运算符,类型为'equals':
其中key=value
Select
的最后一个谓词将实现PredicateInterface
准备陈述方法
\Zend\Db\Sql\Sql::prepareStatementForSqlObject
指示其适配器(即PDO)创建要准备的语句。从这里开始,它变得更复杂一点
\Zend\Db\Sql
是真正神奇的地方,在方法\Zend\Db\Sql::createSqlFromSpecificationAndParameters
中,函数用于构建查询字符串,就像您可以使用的那样
<强>注<强> > BR/>请考虑从现在起使用新网站。当涉及到最新版本的文档时,本网站处于领先地位。
选择类将巧妙地检查您的谓词,并以安全的方式将它们添加到查询中,以防止SQL注入。我建议您亲自查看源代码,以便在最新的ZF版本中为您指出负责此操作的流程和类 谓词处理看看这门课。方法
\Zend\Db\Sql\Predicate::addPredicates
根据谓词的类型确定处理谓词的最佳方法。在本例中,您使用的是关联数组。将根据类型检查和处理该数组中的每个项目:
- 如果找到一个抽象替换字符(问号),它将变成一个
表达式
- 如果值为
,则将对键中的列执行is NULL检查:NULL
其中键为NULL
- 如果该值是一个数组,则将对键中的kolumn执行IN检查:
WHERE键IN(arrayVal1,arrayVal2,…)
- 否则,谓词将是一个新的
运算符,类型为'equals':
其中key=value
Select
的最后一个谓词将实现PredicateInterface
准备陈述方法
\Zend\Db\Sql\Sql::prepareStatementForSqlObject
指示其适配器(即PDO)创建要准备的语句。从这里开始,它变得更复杂一点
\Zend\Db\Sql
是真正神奇的地方,在方法\Zend\Db\Sql::createSqlFromSpecificationAndParameters
中,函数用于构建查询字符串,就像您可以使用的那样
<强>注<强> > BR/>请考虑从现在起使用新网站。当涉及到最新版本的文档时,本网站处于领先地位。
正如我提到的,我使用的是2.4,因此我使用该文档。谢谢你的信息。这对你有帮助吗?如果回答了你的问题,请考虑接受我的回答。正如我提到的,我使用2.4,所以我用了那个文档。谢谢你的信息。这对你有帮助吗?如果回答了你的问题,请考虑接受我的回答。use Zend\Db\Sql\Sql;
$sql = new Sql($adapter);
$select = $sql->select();
$select->from('foo');
$select->where(array('id' => $id));
$statement = $sql->prepareStatementForSqlObject($select);
$results = $statement->execute();