gpt4 book ai didi

php - 在 mysql 查询中引用 int 值

转载 作者:可可西里 更新时间:2023-11-01 06:37:13 26 4
gpt4 key购买 nike

我养成了通过我的 int 函数过滤用户提交的变量的习惯,这确保它是一个数字(如果不是返回 0)并且不在 mysql 查询中引用该变量。

这是不好的做法吗?我想我出于性能原因决定这样做。另外,我一直认为数字不应该放在引号中。

例子:

if($perpage != $user['perpage']){
if($perpage == 50 || $perpage == 100 || $perpage == 200 ){
$DB->query("UPDATE users SET perpage=$perpage WHERE id=$user[id]", __FILE__, __LINE__);
}
}

最佳答案

啊哈!这里有一个有趣的案例!

  1. 总的来说你是对的。将数字视为数字总是更好,而不是字符串

    • 它使您的代码更加理智和一致
    • mysql 中的 strict_mode 设置,如果打开,将不允许您将数字伪装成字符串。
  2. 但是您的实现实际上允许注入(inject)!让我们把它留给你的作业去寻找它:)

这是给你的引用,解释了这个注入(inject):http://php.net/language.types.type-juggling

所以,我会让你的代码像这样

$perpage = intval($perpage);
if($perpage != $user['perpage'] && in_array($perpage,array(50,100,200) {
$DB->query("UPDATE users SET perpage=$perpage WHERE id=$user[id]");
}

关于php - 在 mysql 查询中引用 int 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8022344/

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