я загружаю элементы с Ajax, и я использую смещенномLIMIT с использованием ошибки смещения
JS:
var offset = 0;
$(".load-more").click(function() {
offset+=5;
$(this).addClass("spin");
$.ajax({
url: '/api/fetchitems.php?offset='+offset+'&sort='+sort,
success: function(data){
$(".load-more").before(data);
}
});
});
PHP/SQL:
$offset = intval($_GET["offset"]);
$stmt = $db->prepare(
"SELECT s.id,s.date,s.title,s.views,s.image,s.hidpi,s.width,s.description,u.display_name,u.avatar, s.hotness
FROM showcase AS s
INNER JOIN users AS u ON s.user_id = u.id
UNION ALL
SELECT q.id,q.date,q.title,q.views,0,0,0,q.text,u.display_name,u.avatar, q.hotness
FROM questions AS q
INNER JOIN users AS u ON q.user_id = u.id
ORDER BY hotness DESC
LIMIT :skip, 5
");
$stmt->bindParam(":skip",$offset);
$stmt->execute();
$items = $stmt->fetchAll();
$stmt = null;
Я получаю эту ошибку при исполнении:
Fatal error: Uncaught exception 'PDOException' with message '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 ''5', 5' at line 9' in **** Stack trace: #0 **** PDOStatement->execute() #1 {main} thrown in
Когда я запускаю SQL в phpMyAdmin, он отлично работает.
Вы можете попробовать '$ stmt-> bindParam (": пропустить", intval ($ офсет))'? –
проверить этот URL-адрес http://stackoverflow.com/questions/15853266/pdo-bindparam-not-allowing-statement-to-return-results надеюсь, что он поможет вам – jilesh
поставить запрос «SELECT s.id .. в переменную $ query и echo $ query; exit; Затем в случае успеха функция ajax предупреждает об этом или связывает ее в div. копирует этот запрос и выполняет в mysql, чтобы узнать, что не так в этом запросе. Это поможет вам исправить вашу ошибку без каких-либо help – rahul