Я пытаюсь выполнить следующий запрос, используя библиотеку PHP PDO для таблицы базы данных pgSQL.
SELECT COUNT(*) AS overall, COUNT(IF(username = ?, TRUE, NULL)) AS unames FROM login_attempt WHERE last_checked > NOW() - INTERVAL ? MICROSECOND
но получаю следующую ошибку
Ошибка: SQLSTATE[42601]: Синтаксическая ошибка: 7 ОШИБКА: синтаксическая ошибка в или около "$2" СТРОКА 1: ...gin_attempt WHERE last_checked > NOW() - INTERVAL $2 MICROSE... ^
вот мой полный код функции
private function isQueueSizeExceeded()
{
$sql = "SELECT COUNT(*) AS overall, COUNT(IF(username = :uname, TRUE, NULL)) AS unames FROM login_attempt WHERE last_checked > NOW() - INTERVAL :itime MICROSECOND";
$stmt = $this->pdo->prepare($sql);
$itime= 5000 * 1000;
$stmt->bindParam(':uname', $this->username);
$stmt->bindParam(':itime', $itime);
$stmt->execute();
$count = $stmt->fetch(PDO::FETCH_OBJ);
if (!$count) {
throw new Exception("Failed to query queue size", 500);
}
return ($count->overall >= self::MAX_OVERALL || $count->unames >= self::MAX_PER_USER);
}
ожидается, что этот код будет работать с использованием MySQL, но я пытаюсь запустить с помощью postgreSQL
IF
- это plpgsql, используйтеCASE WHEN
вместо sql - person Vao Tsun   schedule 17.05.2017