PHP Почему массив сохраняет дополнительную строку

0

в sqlqry.php

function procat(){
    require_once("..\db.php");

    $procat = $DBH->prepare("SELECT pro_sr FROM products LEFT JOIN 
    categories ON products.pro_cat=categories.cat_sr");
    $procat->execute();
    while($rowprocat[]=$procat->fetch()) {}
    return $rowprocat;
}

в products.php

<?php 
    $rowprocat=procat(); 
    print_r($rowprocat); 
?>

Array ( [0] => Array ( [pro_sr] => 60 [0] => 60 ) [1] => Array ( [pro_sr] => 61 [0] => 61 ) [2] => Array ( [pro_sr] => 62 [0] => 62 ) [3] => )

почему он показывает 4 строки, тогда как на самом деле он имеет 3 записи. также проверяется в phpMyAdmin показывает 3. 4-я строка пуста.

  • 0
    потому что вы чувствуете себя умным и пытаетесь спасти себя, написав строку кода
  • 0
    извините за то, что я написал ранее на ваш комментарий выше. мой вопрос отличался от того, что вы предполагали. Я сошел с ума, когда вы пометили как дубликат и закрыты. Большая ответственность приходит с большой силой. Снова извиняюсь.
Теги:
database
arrays
pdo

1 ответ

0

Поскольку вы назначаете возвращаемое значение $procat->fetch() в массив, независимо от того, был ли результат или нет.

Вот почему большинство людей используют временную переменную в этом случае в PHP:

function procat(){
    require_once("..\db.php");

    $procat = $DBH->prepare("SELECT pro_sr FROM products LEFT JOIN 
    categories ON products.pro_cat=categories.cat_sr");
    $procat->execute();
    while($row = $procat->fetch()) {
        $rowprocat[] = $row;
    }
    return $rowprocat;
}
  • 0
    Спасибо @feeela. fetch Все помогло мне. Я также попробовал ваш путь, и он тоже работает хорошо. Большое спасибо таким людям, как вы пытаетесь помочь другим.
  • 0
    @EmraanAly Имейте в виду, что если вы обрабатываете огромные объемы данных, fetchAll загрузит все это сразу в память, в то время как fetch загружает только одну строку результата за вызов. Таким образом, правильное использование fetch обычно приводит к более быстрым и легким сценариям.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню