Zend framework Zend\db\sql-prepareStatementForSqlObject-仍然需要绑定或担心sql注入?

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根据谓词的类型确定处理

我在Zend\db\sql中使用ZF2.4和本例。如果我已经使用了prepareStatementForSqlObject(),我需要担心sql注入还是仍然需要执行quote()或转义操作?下面的示例将执行盲变量吗


Select
类将巧妙地检查谓词,并以安全的方式将它们添加到查询中,以防止SQL注入。我建议您亲自查看源代码,以便在最新的ZF版本中为您指出负责此操作的流程和类

谓词处理
看看这门课。方法
\Zend\Db\Sql\Predicate::addPredicates
根据谓词的类型确定处理谓词的最佳方法。在本例中,您使用的是关联数组。将根据类型检查和处理该数组中的每个项目:

  • 如果找到一个抽象替换字符(问号),它将变成一个
    表达式
  • 如果值为
    NULL
    ,则将对键中的列执行is 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
根据谓词的类型确定处理谓词的最佳方法。在本例中,您使用的是关联数组。将根据类型检查和处理该数组中的每个项目:

  • 如果找到一个抽象替换字符(问号),它将变成一个
    表达式
  • 如果值为
    NULL
    ,则将对键中的列执行is 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();