在oop php中验证来自数据库的重复字段

时间:2014-09-08 08:33:20

标签: php oop validation

我对php中的面向对象编程有些新意。目前正致力于界面项目。我有来自数据库的interne_nummer字段。我需要验证此字段以检查是否应该允许重复的interne_nummer字段,但不知道如何验证它。我发布了一个小代码,我想验证interne_nummer字段,因为其他一切在我的代码中正常运行。

 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."'");
 }  

1 个答案:

答案 0 :(得分:0)

你可以试试这样的函数:

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';
}