gpt4 book ai didi

php - MySQL Query 中转义不同变量类型的函数

转载 作者:太空宇宙 更新时间:2023-11-03 10:30:25 26 4
gpt4 key购买 nike

我厌倦了在我的 PHP 中编写查询:

"WHERE '" . Database::escape($var) . "'";

escape() 函数只是调用 mysql_real_escape_string() - 但它就在那里,所以我可以稍后将支持扩展到其他数据库。

必须在查询中使用单引号字符串使我的代码更加困惑。所以我的想法是在我的数据库类中创建另一个函数来为查询“准备”一个变量:

static public function prepare($var)
{

if (is_object($var) || is_array($var) ) {
return " '" . Database::escape(serialize($var)) . "' ";

} else if (is_bool($var)) {
return ' ' . (int)$var . ' ';

} else if (is_int($var)) {
return ' ' . $var . ' ';

} else if (is_string($var) || is_float($var)) {
return " '" . Database::escape($var) . "' ";

} else {
throw new Exception('Unsupported variable type [' . gettype($var) . ']');
}
}

现在这样做的好处是,我不需要担心将哪些变量传递给查询。然而,它提出了两个问题:

  1. 我是否正确处理了每种变量类型?
  2. 出于什么原因(如果有的话)我不应该这样做?

最佳答案

是的,只要使用参数化查询就可以了。这是正确的解决方案,而且并不棘手。

在 PHP 中,使用 PDO 来做到这一点,它的 API 比 mysql_ 或 mysqli_ 更健全,而且它可以在错误时抛出异常并做其他好事。

关于php - MySQL Query 中转义不同变量类型的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1067530/

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