У меня есть простая таблица со следующей таблицей создания
CREATE TABLE ratings_cache (
id INT NOT NULL AUTO_INCREMENT,
movie_id INT NOT NULL,
movie_title VARCHAR(128),
rating DECIMAL(5,4),
rating_count INT DEFAULT 0,
PRIMARY KEY (`id`)
);
Теперь я хочу запросить его с помощью Doctrine с некоторыми параметрами (app
это приложение Silex конечно):
$sql = "SELECT ratings_cache.*
FROM :table_name
WHERE rating_count > :min_rankings
ORDER BY rating DESC, rating_count DESC
LIMIT :limit";
$stmt = $this->app['db']->prepare($sql);
$stmt->bindValue(':min_rankings', $this->minRanks);
$stmt->bindValue('limit', $this->limit);
return $stmt->execute()->fetchAll();
Как вы можете видеть, запрос в этой форме прост и работает без проблем, когда я запускаю его через консоль Mysql, но когда я запускаю приведенный выше код, я получаю следующую ошибку:
An exception occurred while executing '
SELECT *
FROM ratings_cache
WHERE rating_count > :min_rankings
ORDER BY rating DESC, rating_count DESC
LIMIT :limit' with params [20, 30]:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''30'' at line 5
Я понимаю, что проблема может быть в чем-то тривиальном, но я не очень привык к Doctrine (обычно предпочитаю обрабатывать запросы самостоятельно) и просто не знаю, что здесь может быть не так …
Задача ещё не решена.
Других решений пока нет …