Я работаю над процедурой проверки. Проверка должна иметь возможность принимать переменную и тип данных mysql и возвращать значение true, если переменная действительна для данного типа данных mysql.
пример
$price = 1000
$type = "datetime"
Это должно вернуть ложь
$price = 789
$type = "int(11)"
Это должно вернуть истину.
Мой первоначальный план состоит в том, чтобы запросить базу данных, используя DESCRIBE [TABLE] для выбранной таблицы, и получить ее поля вместе с их типом данных.
например
Code | char(9)
Name |text
Age |int
Затем я хочу проверить значения из строки json и убедиться, что проанализированные данные действительны для данной таблицы.
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();
}
Других решений пока нет …