my-first-cms ошибки при доработки запросов базы данных

Ряд возникающих ошибок

#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.

  1. Версия PHP, фаил из которого вызывается функция
  2. Метод класса Article где меняются аргументы
  3. Запрос 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
            ) 
        );
vedro-compota's picture

демонстрацией является PHP скрипт с добавленным запросом/запросами

такой что и должен выполняться (пусть и с ошибками), пока что его тут не видно)

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

то что должно быть в таком файле-скрипте описано тут: http://fkn.ktu10.com/?q=comment/7440#com...

_____________
матфак вгу и остальная классика =)