Подсчёт количества строк в mysql таблице

703
11 августа 2017, 00:38

Доброго времени суток, товарищи гуру-программисты. Собственно нужно чтоб ЭТО считало количество строк в таблице и выводило их последовательно (вверху страницы самые свежие записи, чем дальше чем старее).

<?php 
        include("header-logo.php");         /*присоединение хедера*/
        echo "<br>";                                                                
        $db_host = 'localhost';         /*имя хоста*/
        $db_name = 'hoptoh13_workdays';     /*имя базы*/
        $db_username = 'hoptoh13_andrew';        /*имя пользователя*/
        $db_password = 'SDFADSG';               /*пасс */
        $db_table_to_show = 'news';             /*имя таблицы*/
        $conn = new mysqli($db_host, $db_username, $db_password, $db_name) or die       ('Невозможно открыть базу'); 
          // присоединение к БД
          $sql = "SELECT * FROM `news`";
          $result = $conn->query($sql);
          // присоединение к таблице

        $afh = mysqli_num_rows(mysqli_query("SELECT * FROM `news`")); /*количество строк в таблице*/
        while ($afh > 0) /*цикл для вывода из таблицы строк в обратном порядке (через минус)*/
            {
                $result = mysqli_query("SELECT * FROM news WHERE id=$a");
                $myrow = mysqli_fetch_array($result);

                echo "<div class='news-telo'><span class='news-datetime'>  ".$myrow["datatime"].
                    "  </span><img src='".$myrow["image"]."' class='news-image'>
                    <br>
                    <br>
                    <span class='news-text'>".$myrow["text"]."</span>
                    <br>
                    <br>
                    <br>
                    </div>
                    <br>";
                $a = $a-1;
            }

            include("footer.php");  /*футер*/      
     ?>

Комментарии пишу чтоб не запутаться т.к. совсем недавно начал увлекаться темой кодинга. Подскажите, пожалуйста, что написано не так? PHP матерится на строчку

$afh = mysqli_num_rows(mysqli_query("SELECT * FROM `news`")); 

выдаёт

Warning: mysqli_query() expects at least 2 parameters, 1 given in public_html/news.php on line 28
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in public_html/news.php on line 28

Также буду благодарен за хорошие мануалы с примерами по написанию простых команд для версий php 5.5 и выше

Answer 1

Ругается на эту строку

$afh = mysqli_num_rows(mysqli_query("SELECT * FROM `news`")); 

так как mysqli_query принимает 2 параметра (линк на коннект к бд и запрос). Добавьте линк и не будет ругаться. Также можно в mysqli_num_rows передать уже существующую переменную $result.

Почитать подробнее - ссылка

также:

  • Нет инициализации переменной $a ;
  • Запрос вставлять в цикл - дурной тон, избегайте.

  • Если запрос в переменной $sql используется только для определения кол-ва записей, рекомендую написать так:

    include("header-logo.php"); echo "<br>"; $db_host = 'localhost'; $db_name = 'hoptoh13_workdays'; $db_username = 'hoptoh13_andrew'; $db_password = 'SDFADSG'; $db_table_to_show = 'news';

    $conn = new mysqli($db_host, $db_username, $db_password, $db_name) or die ('Невозможно открыть базу');

    $row = mysqli_fetch_array(mysqli_query($conn,"SELECT count(*) FROM news"));

    $cnt = $row[0];

    $arr = array();

    // Нет переменной $a - обратите внимание $query = mysqli_query($conn,"SELECT * FROM news WHERE id=$a ORDER BY datatime desc");

    while(list($datatime,$image,$text) = mysqli_fetch_array($query))
    {
        array_push($arr,array("datatime"=>$datatime, "image"=>$image, "text"=>$text));
    }
    

    if($cnt > 0) {

    for($i=0;$i<count($arr);$i++) { echo "<div class='news-telo'><span class='news-datetime'> ".$arr[$i]["datatime"]. "</span><img src='".$arr[$i]["image"]."' class='news-image'> <br> <br> <span class='news-text'>".$arr[$i]["text"]."</span> <br> <br> <br> </div> <br>"; } }

    include("footer.php"); /*футер*/

READ ALSO
PHP regular expression

PHP regular expression

Собрал регулярное выражение [\\\]+[nfvabrt0]{1} для замены некоторых символов (\n, \t, \0 и тд

618
Где в post-запросе передаются параметры?

Где в post-запросе передаются параметры?

В стандарте HTTP есть 3 составляющие: стартовая строка, заголовки и тело

639
Плагин HTML5 video от ckeditor

Плагин HTML5 video от ckeditor

Поставил плагин HTML5 video от ckeditor

637
Вызов нескольких функций класса разом

Вызов нескольких функций класса разом

Сразу извиняюсь если некорректно назвал топик, но интересует такая тема:

496