Я кодирую php, используя XAMPP на Windows. $bdd
- это переменная, полученная с помощью:
$bdd = new PDO('mysql:host=localhost;dbname=memviv', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
Если я выполню следующий запрос, у меня не возникнет проблем:
$res_query = $bdd->query('SELECT * FROM cards WHERE due < NOW() AND (state = \'default\' OR state = \'recover\') ORDER BY RAND() LIMIT 50');
Однако, если я выполню аналогичный подготовленный запрос, где я введите положительное целое число $n_card
в качестве значения LIMIT:
$res_query = $bdd->prepare('SELECT * FROM cards WHERE due < NOW() AND (state = \'default\' OR state = \'recover\') ORDER BY RAND() LIMIT ?');
$res_query->execute(array($n_cards));
Я получаю сообщение об ошибке:
Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''50'' at line 1 in C:\xampp\htdocs\memviv\php\include\study_functions.php:14 Stack trace: #0 C:\xampp\htdocs\memviv\php\include\study_functions.php(14): PDOStatement->execute(Array) #1 C:\xampp\htdocs\memviv\php\study_model.php(71): compute_review_queue_db(50) #2 C:\xampp\htdocs\memviv\php\study_model.php(34): new_queue('review', 50) #3 C:\xampp\htdocs\memviv\php\study.php(5): study_model() #4 {main} thrown in C:\xampp\htdocs\memviv\php\include\study_functions.php on line 14
Не могли бы вы помочь мне решить эту проблему?