什么时候应该使用PDO使用try和catch来准备和执行?

汤姆

我已经使用PDO已有两年了,但是对于何时应该使用tryand准备和执行,我从未进行过充分的研究catch

我的理解是,你应该使用trycatch当数据可能包含用户输入。

因此,例如以下代码是安全的:

public function getDetails($filename, $what){
    $query = $this->handler->prepare('SELECT * FROM videos WHERE v_fileName = :v_fileName');
    try{
        $query->execute([
            ':v_fileName' => $filename
        ]);
    }catch(PDOException $e){
        return $e->getMessage();
    }
}

$filename 在此示例中,该内容来自URL。

例如,当没有从URL获得任何东西时,它也将被完全保存:

$query = $this->handler->prepare('SELECT * FROM videos WHERE u_id = :u_id ORDER BY v_id LIMIT :climit,1');
$query->execute([
    ':u_id'     => $this->user->getChannelId($userid),
    ':climit'   => $optional[1]
]);

$fetch = $query->fetch(PDO::FETCH_ASSOC);

我对准备陈述的理解是否正确?如果不正确,我应该怎么做?

达曼

仅当您有充分理由这样做时。

这不仅适用于PDO例外。任何例外情况都一样。仅当您的代码可以从中恢复并执行其他一些操作时,才捕获该异常。

捕获异常只是出于echoreturn $e->getMessage();不是合理的原因。您的代码无法从问题中恢复,您只是在处理异常。

关于何时恢复的一个很好的例子是,如果您正在使用数据库事务,并且在失败的情况下,您想要回滚并执行其他操作。您可以调用PDO::rollBack()catch然后使您的代码执行某些替代逻辑。

尝试捕获不是安全措施。它与用户输入无关。它仅在您希望代码失败但有计划B可以处理这种情况的情况下使用。

有关更多信息,您可以阅读“我的PDO语句不起作用”和“ PHP错误报告”一文。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

什么时候应该使用<或<()或<<和>或>()?

来自分类Dev

什么时候应该使用`drain`和`into_iter`?

来自分类Dev

什么时候应该使用on * DOM属性和on * HTML属性?

来自分类Dev

什么时候应该使用conformsToProtocol和responsToSelector方法?

来自分类Dev

什么时候应该使用KnockoutJS组件和模板?

来自分类Dev

什么时候应该使用挂载和创建?

来自分类Dev

什么时候应该使用on * DOM属性和on * HTML属性?

来自分类Dev

什么时候应该使用conformsToProtocol和responsToSelector方法?

来自分类Dev

什么时候应该使用准备好的语句?

来自分类Dev

什么时候应该使用括号()和Initializer {}语法来初始化C ++ 11中的对象?

来自分类Dev

什么时候使用AbstractAnnotationConfigDispatcherServletInitializer和WebApplicationInitializer?

来自分类Dev

count ++和++ count,什么时候使用?

来自分类Dev

什么时候使用mapParitions和mapPartitionsWithIndex?

来自分类Dev

count ++和++ count,什么时候使用?

来自分类Dev

什么时候使用.jar和.exe?

来自分类Dev

什么时候在postgreSQL中使用=和:=?

来自分类Dev

什么时候应该使用os.name和sys.platform和platform.system()?

来自分类Dev

DatatypeProperty,ObjectProperty和FunctionalProperty有什么区别,什么时候应该使用它们?

来自分类Dev

set,export和env之间有什么区别?什么时候应该使用它们?

来自分类Dev

set,export和env之间有什么区别?什么时候应该使用它们?

来自分类Dev

DatatypeProperty,ObjectProperty和FunctionalProperty有什么区别,什么时候应该使用它们?

来自分类Dev

我什么时候应该使用yield和何时在Koa.js中使用yield *

来自分类Dev

我什么时候应该使用yield和何时使用Koa.js的yield *

来自分类Dev

在设计方面和编写库时,什么时候应该使用指针作为参数,什么时候不应该使用指针?

来自分类Dev

我们什么时候应该使用@PreAuthorize和@Secured

来自分类Dev

我什么时候应该使用let,成员val和成员this。

来自分类Dev

什么时候应该使用sp,dp,px,in和mm?(安卓)

来自分类Dev

什么时候我们应该使用带括号和不带括号的sizeof

来自分类Dev

什么时候应该在RapidJSON中使用CrtAllocator和MemoryPoolAllocator?

Related 相关文章

  1. 1

    什么时候应该使用<或<()或<<和>或>()?

  2. 2

    什么时候应该使用`drain`和`into_iter`?

  3. 3

    什么时候应该使用on * DOM属性和on * HTML属性?

  4. 4

    什么时候应该使用conformsToProtocol和responsToSelector方法?

  5. 5

    什么时候应该使用KnockoutJS组件和模板?

  6. 6

    什么时候应该使用挂载和创建?

  7. 7

    什么时候应该使用on * DOM属性和on * HTML属性?

  8. 8

    什么时候应该使用conformsToProtocol和responsToSelector方法?

  9. 9

    什么时候应该使用准备好的语句?

  10. 10

    什么时候应该使用括号()和Initializer {}语法来初始化C ++ 11中的对象?

  11. 11

    什么时候使用AbstractAnnotationConfigDispatcherServletInitializer和WebApplicationInitializer?

  12. 12

    count ++和++ count,什么时候使用?

  13. 13

    什么时候使用mapParitions和mapPartitionsWithIndex?

  14. 14

    count ++和++ count,什么时候使用?

  15. 15

    什么时候使用.jar和.exe?

  16. 16

    什么时候在postgreSQL中使用=和:=?

  17. 17

    什么时候应该使用os.name和sys.platform和platform.system()?

  18. 18

    DatatypeProperty,ObjectProperty和FunctionalProperty有什么区别,什么时候应该使用它们?

  19. 19

    set,export和env之间有什么区别?什么时候应该使用它们?

  20. 20

    set,export和env之间有什么区别?什么时候应该使用它们?

  21. 21

    DatatypeProperty,ObjectProperty和FunctionalProperty有什么区别,什么时候应该使用它们?

  22. 22

    我什么时候应该使用yield和何时在Koa.js中使用yield *

  23. 23

    我什么时候应该使用yield和何时使用Koa.js的yield *

  24. 24

    在设计方面和编写库时,什么时候应该使用指针作为参数,什么时候不应该使用指针?

  25. 25

    我们什么时候应该使用@PreAuthorize和@Secured

  26. 26

    我什么时候应该使用let,成员val和成员this。

  27. 27

    什么时候应该使用sp,dp,px,in和mm?(安卓)

  28. 28

    什么时候我们应该使用带括号和不带括号的sizeof

  29. 29

    什么时候应该在RapidJSON中使用CrtAllocator和MemoryPoolAllocator?

热门标签

归档