gpt4 book ai didi

php - 在 PDO 中强类型参数的原因?

转载 作者:可可西里 更新时间:2023-10-31 22:46:32 24 4
gpt4 key购买 nike

当你绑定(bind)参数到SQL语句时,你可以提供参数类型,如PDO::PARAM_STR。如果不这样做,请键入默认值 PDO::PARAM_STR。具体设置每个参数的类型的原因是什么? PDO::PARAM_STR 可以与我至少在 MySQL 中知道的任何参数一起使用。我认为即使 PDO::PARAM_STR 也可以用于 BLOB 列。

PDO::PARAM_STR 不会引入任何 SQL 注入(inject),因为您仍然有准备好的查询。

最佳答案

使用 PARAM_STR 恰好总是在列值中起作用,因为 mySQL implicitly converts values to the correct type where it can , 但它会失败,例如在这个查询中:

$limit = 1;

$dbh->prepare("SELECT * FROM items LIMIT :limit");
$dbh->bindParam(":limit", $limit, PDO::PARAM_STR);
// Will throw "You have an error in your SQL syntax..."

绝对应该在适当的地方使用 PARAM_INT - 对于像上面这样的情况,并为 mySQL 以外的数据库引擎做准备,因为他们的期望可能更严格。

关于php - 在 PDO 中强类型参数的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5793340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com