I've had a look at other stack overflow answers but I didn't see anything similar to my problem other than the error code.
I'm trying to use an array in my query which works but I'm not sure why with the :start and :offset binds it fails to run.
$location = array("England", "America", "Australia"); 
$qMarks = str_repeat('?,', count($location) - 1) . '?';
//Query
$sql=$conn->prepare("SELECT * FROM adverts WHERE location IN ($qMarks) AND status = 2 LIMIT :limit OFFSET :start");
$sql->bindValue(':limit', (int) $limit, PDO::PARAM_INT);
$sql->bindValue(':start', (int) $start, PDO::PARAM_INT);
$sql->execute($location);
$adverts=$sql->fetchAll();
I'm not sure why with the limit and offset binds present it doesn't run, is it to do with that you can't combining positional placeholders.
Update 1 -
If I remove the array and the qMark and change the execute to sql->execute();
then the binds run
