Переменная валидации PHP MYSQL относится к типу базы данных.

Я работаю над процедурой проверки. Проверка должна иметь возможность принимать переменную и тип данных 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

Любая помощь будет оценена! заранее спасибо.

0

Решение

Если вы выполняете поиск в 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();
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]