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
- 559 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...
_____________
матфак вгу и остальная классика =)