| | <?php |
| |
|
| | namespace SimpleValidator\Validators; |
| |
|
| | use PDO; |
| |
|
| | class Unique extends Base |
| | { |
| | private $pdo; |
| | private $primary_key; |
| | private $table; |
| |
|
| | public function __construct($field, $error_message, PDO $pdo, $table, $primary_key = 'id') |
| | { |
| | parent::__construct($field, $error_message); |
| |
|
| | $this->pdo = $pdo; |
| | $this->primary_key = $primary_key; |
| | $this->table = $table; |
| | } |
| |
|
| | public function execute(array $data) |
| | { |
| | if ($this->isFieldNotEmpty($data)) { |
| | if (! isset($data[$this->primary_key])) { |
| | $rq = $this->pdo->prepare('SELECT 1 FROM '.$this->table.' WHERE '.$this->field.'=?'); |
| | $rq->execute(array($data[$this->field])); |
| | } |
| | else { |
| |
|
| | $rq = $this->pdo->prepare( |
| | 'SELECT 1 FROM '.$this->table.' |
| | WHERE '.$this->field.'=? AND '.$this->primary_key.' != ?' |
| | ); |
| |
|
| | $rq->execute(array($data[$this->field], $data[$this->primary_key])); |
| | } |
| |
|
| | $result = $rq->fetchColumn(); |
| |
|
| | if ($result == 1) { |
| | return false; |
| | } |
| | } |
| |
|
| | return true; |
| | } |
| | } |
| |
|