my-first-cms ошибки при доработки запросов базы данных
Primary tabs
#2 Практическое задание №2 -- Добавляем ещё одно поле в модель статьи
SQL запросы работают корректно, проверенно в редакторе.
Прилогаю PHP скрипт.
<?php
// Функция для пересборки запроса
function buildWhereConditionForGetLists(...$arr) {
$accum = array(); //
$switch = 0;
foreach ($arr as $val) {
if (!empty($val)) {
$accum[] = $val;
$switch += 1;
}
}
if ($switch > 1) {
return "WHERE ". implode(" AND ", $accum);
} elseif ($switch == 1) {
return "WHERE ". implode($accum);
} else {
return "";
}
}
$categoryId = 1;
$active = 1;
$order = "publicationDate DESC";
$numRows = 5;
$conn = new PDO("mysql:host=localhost;dbname=cms;charset=utf8;", "myuser", 12345);
$fromPart = "FROM articles";
$categoryClause = $categoryId ? "categoryId = :categoryId" : "";
$activeClause = $active ? "active = :active" : "";
$assembledRequest = buildWhereConditionForGetLists($categoryClause, $activeClause);
$sql = "SELECT *, UNIX_TIMESTAMP(publicationDate)
AS publicationDate
$fromPart $assembledRequest
ORDER BY $order LIMIT :numRows";
$st = $conn->prepare($sql);
$st->bindValue(":numRows", $numRows, PDO::PARAM_INT);
if ($categoryId)
$st->bindValue( ":categoryId", $categoryId, PDO::PARAM_INT);
if ($active)
$st->bindValue( ":active", $active, PDO::PARAM_INT);
echo $sql . "<br>". "<br>";
$st->execute(); // выполняем запрос к базе данных
while ($result = $st->fetch(PDO::FETCH_ASSOC)) {
print_r($result);
echo "<br>". "<br>";
}
Возникающие ошибки в разных версиях PHP.
- Версия PHP, фаил из которого вызывается функция
- Метод класса Article где меняются аргументы
- Запрос SQL
- 8.1 index.php function homepage()
- $data = Article::getList(HOMEPAGE_NUM_ARTICLES, null, "publicationDate DESC", true);
- SELECT *, UNIX_TIMESTAMP(publicationDate) AS publicationDate FROM articles WHERE active = :active ORDER BY publicationDate DESC LIMIT :numRows
- Warning: Trying to access array offset on value of type int in /var/www/my-first-cms/classes/Article.php on line 197
- Выводит статьи, согласно запросу.
- 8.1 archive.php function archive()
- $data = Article::getList(HOMEPAGE_NUM_ARTICLES, $results['category'] ? $results['category']->id : null);
- SELECT *, UNIX_TIMESTAMP(publicationDate) AS publicationDate FROM articles ORDER BY publicationDate DESC LIMIT :numRows
- Warning: Trying to access array offset on value of type int in /var/www/my-first-cms/classes/Article.php on line 197
- Выводит все статьи, но не отображает их количество.
- 8.1 admin.php function listArticles()
- $data = Article::getList();
- SELECT *, UNIX_TIMESTAMP(publicationDate) AS publicationDate FROM articles ORDER BY publicationDate DESC LIMIT :numRows
- Warning: Trying to access array offset on value of type int in /var/www/my-first-cms/classes/Article.php on line 197
- Выводит все статьи, но не отображает их количество.
- 8.1 index.php function homepage()
- $data = Article::getList(HOMEPAGE_NUM_ARTICLES, $results['category'] ? $results['category']->id : null, "publicationDate DESC", true); - 96 страница
- Warning: Undefined variable $results in /var/www/my-first-cms/index.php on line 96
- Warning: Trying to access array offset on value of type null in /var/www/my-first-cms/index.php on line 96
- SELECT *, UNIX_TIMESTAMP(publicationDate) AS publicationDate FROM articles WHERE active = :active ORDER BY publicationDate DESC LIMIT :numRows
- Warning: Trying to access array offset on value of type int in /var/www/my-first-cms/classes/Article.php on line 197
- Выводит статьи, согласно запросу.
- 8.1 index.php function homepage()
- $data = Article::getList(HOMEPAGE_NUM_ARTICLES, 1, "publicationDate DESC", true);
- SELECT *, UNIX_TIMESTAMP(publicationDate) AS publicationDate FROM articles WHERE categoryId = :categoryId AND active = :active ORDER BY publicationDate DESC LIMIT :numRows
- Warning: Trying to access array offset on value of type int in /var/www/my-first-cms/classes/Article.php on line 197
- Выводит статьи, согласно запросу.
- 7.4 index.php function homepage()
- $data = Article::getList(HOMEPAGE_NUM_ARTICLES, null, "publicationDate DESC", true);
- SELECT *, UNIX_TIMESTAMP(publicationDate) AS publicationDate FROM articles WHERE active = :active ORDER BY publicationDate DESC LIMIT :numRows
- Выводит статьи, согласно запросу.
- 7.4 index.php function homepage()
- $data = Article::getList(HOMEPAGE_NUM_ARTICLES, $results['category'] ? $results['category']->id : null, "publicationDate DESC", true);
- Notice: Undefined variable: results in /var/www/my-first-cms/index.php on line 96
- Notice: Trying to access array offset on value of type null in /var/www/my-first-cms/index.php on line 96
- SELECT *, UNIX_TIMESTAMP(publicationDate) AS publicationDate FROM articles WHERE active = :active ORDER BY publicationDate DESC LIMIT :numRows
- Выводит статьи, согласно запросу.
- 7.4 index.php function homepage()
- $data = Article::getList(HOMEPAGE_NUM_ARTICLES, 1, "publicationDate DESC", true);
- SELECT *, UNIX_TIMESTAMP(publicationDate) AS publicationDate FROM articles WHERE categoryId = :categoryId AND active = :active ORDER BY publicationDate DESC LIMIT :numRows
- Выводит статьи, согласно запросу.
До того как я изменил запрос на подсчет общего колличества статей, в 8.1 выдовало ошибки.
$res = $conn->query("SELECT COUNT(*) $fromPart");
$res->execute();
$totalRows = $res->fetchColumn();
$conn = null;
return (array(
"results" => $list,
"totalRows" => $totalRows[0] // 197 страница вызывает возмущения у PHP
)
);
- Log in to post comments
- 1545 reads
vedro-compota
Thu, 07/13/2023 - 15:55
Permalink
демонстрацией является PHP
демонстрацией является PHP скрипт с добавленным запросом/запросами
такой что и должен выполняться (пусть и с ошибками), пока что его тут не видно)
_____________
матфак вгу и остальная классика =)
vedro-compota
Thu, 07/13/2023 - 15:56
Permalink
то что должно быть в таком
то что должно быть в таком файле-скрипте описано тут: http://fkn.ktu10.com/?q=comment/7440#com...
_____________
матфак вгу и остальная классика =)