PHP MYSQL 验证变量是数据库类型

PHP MYSQL validate variable is of database type

我正在处理验证例程。验证需要能够采用变量和 mysql 数据类型,如果变量对给定的 mysql 数据类型有效,则 return 为真。

示例

$price = 1000

$type = "datetime"

这应该return false

$price = 789

$type = "int(11)"

这应该 return 正确。

我最初的计划是使用 DESCRIBE [TABLE] 查询数据库以获取选定的 table 并检索它的字段及其数据类型。

例如

Code | char(9)
Name |text
Age  |int 

然后我想验证 json 字符串中的值并确保解析的数据对给定的 table 有效。

Code: ONE12345

Name: Jimmy1

Age: fifty 

如有任何帮助,我们将不胜感激!提前致谢。

如果您进行 google 搜索,应该会显示很多 PHP 验证 类。做一些研究以选择最适合您的需求:)

或者您可以自己编写。这是我几年前写的。

function validateInputs($fields){
        foreach ($fields as $field => $fieldInfo){
            foreach (explode(',', $fieldInfo[1]) as $ruleString) {

                $ruleOp = explode('|', $fieldInfo[1]);
                $rule = $ruleOp[0];
                $op = isset($ruleOp[1]) ? $ruleOp[1] : '';
                $val = isset($ruleOp[2]) ? $ruleOp[2] : false;

                switch ($rule) {
                    case 'required':
                        if(!isset($_POST[$field] || (isset($_POST[$field] && $_POST[$field] == '')){
                            throw new Exception ($fieldInfo[0].' is required');
                        }
                        break;

                    case 'requiredif':
                        if(!isset($_POST[$op] || (isset($_POST[$op] && $_POST[$op] == '')
                        && !isset($_POST[$field] || (isset($_POST[$field] && $_POST[$field] == '' && $val ==     false)
                        || ($val !== false && isset($_POST[$op] && $_POST[$op] === $val && isset($_POST[$op]     && $_POST[$op] == '')){
                            throw new Exception ($fieldInfo[0].' needs a value');
                        }
                        break;

                    case 'email':
                        if(isset($_POST[$field] && !filter_var($_POST[$field], FILTER_VALIDATE_EMAIL)){
                            throw new Exception ($fieldInfo[0].' is not a valid email');
                        }
                        break;

                    case 'match':
                        if(isset($_POST[$field] && isset($_POST[$op] 
                            && $_POST[$field] != $_POST[$op]){
                            throw new Exception ($fieldInfo[0].' should match with `'.$fields[$op][0].'`');
                        }
                        break;

                    case 'file':
                        if(isset($_POST[$field] && !$_POST[$field] instanceof stdClass){
                            throw new Exception ($fieldInfo[0].' is not a valid file');
                        }
                        break;
                }
            }
        }
    }

我就是这样称呼它的。

try{
    validateInputs(array(
        'name' => array('Username', 'required'),
        'email' => array('Email', 'required|email')
    ));
}
catch(Exception $e){
    echo $e->getMessage();
}