При запросе возникает следующая ошибка:
SQLSTATE[HY000]: General error: mode must be an integer
Впервые столкнулся с ней
Код выглядит следующим образом:
<?
require_once('includes/db.php');
require_once('includes/requests.php');
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
try {
$getArticle = $_GET['single'];
$STHArticles = $DBH->query('SELECT * FROM articles WHERE article_categorie = ', $getArticle);
$STHArticles->setFetchMode(PDO::FETCH_ASSOC);
$rowArticles = $STHArticles->fetch();
echo $rowArticles['title'];
}
catch(PDOException $e) {
echo "Ошибка...";
file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
}
?>
В таблице мы имеем такие столбцы:
id
title
article_categorie
content
Адресная строка: /?single=1
Это значит, что $getArticle
содержит тип string
. Если вы точно уверены, что там будет тип int
, том можете выполнить явное приведение типов:
$getArticle = (int) $_GET['single'];
Или используйте методPDOStatement::bindParam
- он позволяет указать передаваемый тип данных:
$statement->bindParam('param1', $getArticle, PDO::PARAM_INT);
У вас ошибка в строке:
$STHArticles = $DBH->query('SELECT * FROM articles WHERE article_categorie = ', $getArticle);
Согласно документации для метода query, второй параметр должен быть int. Подробнее тут: http://php.net/manual/ru/pdo.query.php
Можно попробовать переделать код следующим образом:
<?
require_once('includes/db.php');
require_once('includes/requests.php');
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
try {
$getArticle = $_GET['single'];
// заменим этот метод на prepare
//$STHArticles = $DBH->query('SELECT * FROM articles WHERE article_categorie = ', $getArticle);
$STHArticles = $DBH->prepare('SELECT * FROM articles WHERE article_categorie = ?');
$STHArticles->execute(array($getArticle));
$STHArticles->setFetchMode(PDO::FETCH_ASSOC);
$rowArticles = $STHArticles->fetch();
echo $rowArticles['title'];
}
catch(PDOException $e) {
echo "Ошибка...";
file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
}
?>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты