Я хочу обновить свой текущий код, который постоянно вводится с помощью PDO.
В настоящее время я застрял с использованием переменной внутри запроса PDO.
Если у меня есть два аргумента, подобных этому
$rowsPerPage = 3;
// by default we show first page
$pageNum = 1;
if (isset($_GET['page'])) {
$pageNum = mysql_real_escape_string($_GET['page']);
}
$offset = ($pageNum - 1) * $rowsPerPage;
И у меня есть запрос, подобный этому
$STH = $DBH->query("SELECT News.ID, LEFT(NewsText,650), Title, AID, Date, imgID," .
"DATE_FORMAT(Date, '%d.%m.%Y.') as formated_date " .
"FROM News, Categories, NewsCheck WHERE Name LIKE '%News - Block%' AND CID=Categories.ID AND JID=News.ID ".
"ORDER BY `Date` DESC LIMIT $offset, $rowsPerPage");
PDO сообщает об ошибке в последней строке запроса. ORDER BY Когда я заменяю эти строки на "ORDER BY Date DESC LIMIT3,3");
, все работает.
Итак, как добавить значения переменных в PDO :: query?
Обновлено: благодаря ответу ниже я обновил свой код следующим образом
$STH = $DBH->prepare("SELECT News.ID, LEFT(NewsText,650), Title, AID, Date, imgID," .
"DATE_FORMAT(Date, '%d.%m.%Y.') as formated_date " .
"FROM News, Categories, NewsCheck WHERE Name LIKE '%News - Block%' AND CID=Categories.ID AND JID=News.ID ".
"ORDER BY `Date` DESC LIMIT :offset, :rowsPerPage;");
$STH->bindParam(':offset', $offset, PDO::PARAM_STR);
$STH->bindParam(':rowsPerPage', $rowsPerPage, PDO::PARAM_STR);
$STH->execute();
Но произошла ошибка:
Неустранимая ошибка: необработанное исключение 'PDOException' с сообщением'SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1064 В синтаксисе SQL есть ошибка;проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с '-3', '3' 'в строке 1 в /pdo/test.php:42 Трассировка стека: # 0 / pdo / test.php (42): PDOStatement-> execute () # 1 {main}, брошенный в /pdo/test..
Второе обновление Изменено с PARAM_STR на PARAM_INT, как это
$STH->bindParam(':offset', $offset, PDO::PARAM_INT);
$STH->bindParam(':rowsPerPage', $rowsPerPage, PDO::PARAM_INT);
Все работает.