gpt4 book ai didi

php - 是否有根据列类型执行 MySQL 数据验证和清理的 PHP 库?

转载 作者:行者123 更新时间:2023-11-29 01:01:45 27 4
gpt4 key购买 nike

您是否知道可以为 MySQL 数据库执行一些基本验证和转义功能的任何开源库或框架。

我设想的是:

//give it something to perform the quote() quoteInto() methods
$lib->setSanitizor($MyZend_DBAdaptor);

//tell it structure of the table - colnames/coltypes/ etc
$lib->setTableDescription($tableDescArray);

//use it to validate and escape according to coltype
foreach ($prospectiveData as $colName => $rawValue)
if ( $lib->isValid($colName, $rawValue))
{
//add it to the set clause
$setValuesArray[$lib->escapeIdentifier($colName)] = $lib->getEscapedValue($colName,$rawValue);
}
else {
throw new Exception($lib->getErrorMessage());
}

等...

我看过了 - Zend_Db_Table(知道表的描述),以及 - Zend_Db_Adaptor(知道如何根据类型转义/清理值)

但是尽管它们可以进行清理,但它们不会在更新/插入之前自动执行任何巧妙的验证操作

有谁知道一个好的 PHP 库来执行这种我可以使用而不是自己编写的验证?

我设想了很多这样的东西:

   ...  
elseif (eregi('^INT|^INTEGER',$dataset_element_arr[col_type]))
{
$datatype='int';

if (eregi('unsigned',$dataset_element_arr[col_type]))
{
$int_max_val=4294967296;
$int_min_val=0;
}
else {
$int_max_val=2147483647;
$int_min_val=-2147483648;
}
}

(p.s 我知道 eregi 已被弃用 - 它只是费力代码的一个示例)

最佳答案

我在 Zend_Db 中写了很多代码。

代码不会在更新/插入中进行大量清理或转义,因为它使用查询参数。如果您使用参数将动态值传递给查询,则无需担心 SQL 注入(inject)。

请参阅我对 avoiding MySQL injections with the Zend_Db class 的回答了解更多详情。

MySQL 还支持一些比 PHP 整数更大的数据类型,例如 BIGINT,因此您必须用 PHP 字符串来表示它们。然后是 MySQL DATE 值等等。最好通过将值插入数据库并处理任何异常来验证这些值。

关于php - 是否有根据列类型执行 MySQL 数据验证和清理的 PHP 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2695703/

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