<?php
namespace queasy\db\query;
use PDO;
class DeleteQuery extends TableQuery
{
private $fieldName;
private $fieldValue;
public function __construct(PDO $pdo, $tableName, $fieldName = null, $fieldValue = null)
{
parent::__construct($pdo, $tableName);
$this->fieldName = $fieldName;
$this->fieldValue = is_array($fieldValue)
? array_unique($fieldValue)
: $fieldValue;
}
public function run(array $params = array(), array $options = array())
{
$conditionString = '';
if (null !== $this->fieldName) {
if (is_array($this->fieldValue)) {
$params = array();
for ($i = 1; $i <= count($this->fieldValue); $i++) {
$params[':' . $this->fieldName . '_queasydb_' . $i] = $this->fieldValue[$i - 1];
}
$conditionString = sprintf(
'WHERE %s IN (%s)',
$this->fieldName,
implode(', ', array_keys($params))
);
} else {
$conditionString = sprintf(
'WHERE `%s` = :%1$s',
$this->fieldName
);
$params = array(':' . $this->fieldName => $this->fieldValue);
}
}
$sql = sprintf('
DELETE FROM `%s`
%s',
$this->tableName(),
$conditionString
);
$this->setSql($sql);
return parent::run($params, $options);
}
}
|