在oop php中针对数据库中的重复字段进行验证
我对php中的面向对象编程有些陌生。目前正在进行接口项目。我有来自数据库的interne_nummer字段。我需要验证这个字段,以检查是否允许存在重复的interne_nummer字段,但不知道如何验证它。我已经发布了一个小代码,我想验证interne_nummer字段,因为我的代码中的其他一切都运行良好在oop php中针对数据库中的重复字段进行验证,php,oop,validation,Php,Oop,Validation,我对php中的面向对象编程有些陌生。目前正在进行接口项目。我有来自数据库的interne_nummer字段。我需要验证这个字段,以检查是否允许存在重复的interne_nummer字段,但不知道如何验证它。我已经发布了一个小代码,我想验证interne_nummer字段,因为我的代码中的其他一切都运行良好 case 'interne_nummer': { /* validate against valid interne_nummer */ $this->interne
case 'interne_nummer':
{
/* validate against valid interne_nummer */
$this->interne_nummer = trim(strval($value));
break;
}
例如,我正在验证一些浮点字段,如下所示,其工作正常:
case 'schlussrate':
{
/* @todo validate as float*/
try {
$this->{$name} = $this->getFloatValue($value);
} catch (Execption $e) {
$this->{$name} = '';
// Throw Exception to higher Level
throw new Exeption("Field '".$name."': ".$e->getMessage());
}
break;
}
protected function getFloatValue($value) {
if (is_numeric($value)) {
return floatval($value);
}
throw new \Exeption("Value not allowed '".$value."'");
}
您可以尝试使用以下函数:
public function exists($detail, $table, $column, $value) {
$stmt = $this->mysqli->prepare("SELECT `$detail` FROM `$table` WHERE `$column` = ?");
$stmt->bind_param('s', $value);
$stmt->execute();
$stmt->store_result();
if($stmt->num_rows >= 1) {
return true;
} else {
return false;
}
}
因此,当调用函数时,它可能如下所示:
// "SELECT `interne_nummer` FROM `workers` WHERE `interne_nummer` = '$interne_nummer_val'"
if($class->exists('interne_nummer', 'workers', 'interne_nummer', '$interne_nummer_val')) {
echo 'Number exists';
} else {
echo 'Number doesn\'t exists';
}
实际上,这与php无关。在数据库中使用唯一键?如果该字段来自数据库,为什么不能将其标记为
unique
,让数据库注意,不存在重复项?然后运行SELECT*from table WHERE interne_numer=$value
,查看记录是否已经存在。我真的不明白这里有什么问题。如果你不能做到这一点,那么就查询一下是否存在一个带有该数字的值?它与OOP无关!很抱歉,但请检查更新的问题,即我如何在不更改查询的情况下验证浮点字段,这就是我希望通过验证重复输入的interne\u nummer字段的方式code@ajay如果将显示的getFloatValue()函数更改为也使用此函数。您不需要更改查询,只需添加一个使用新查询的新函数。顺便说一句,它可以很容易地验证许多字段。实际上,字段intern_numer是非常重要的字段,它是我要验证重复条目的唯一字段,因为它就像数据库中的主键一样工作。@ajay但您仍然可以用此函数替换该函数。如果你这样做,它应该工作,你能告诉我这样一种方式如何做到这一点,在例子中给出?我不想使用任何查询,因为此文件仅用于检查我的字段的有效性,我不想在此文件中使用任何查询。只想使用单独的功能来检查重复条目。你知道有什么方法吗?与验证整数值一样,我使用的是\u numeric()方法