Arhn - архитектура программирования

Цикл Mysqli SELECT * FROM

В данный момент я перехожу на mysqli/PDO и преобразовываю цикл SELECT из «старого» метода в mysqli.

«Старый» метод:

$query="SELECT * FROM transactions ORDER BY id DESC LIMIT 10";
$result=mysql_query($query);
$num=mysql_num_rows($result);       

$i=0;

while ($i < $num) {
    $f1=mysql_result($result,$i,"name");
    $f2=mysql_result($result,$i,"surname");
    $f3=mysql_result($result,$i,"pcode");
    $f4=mysql_result($result,$i,"transaction_id");
    $f5=mysql_result($result,$i,"articles");
    $f6=mysql_result($result,$i, "delivery");

    //echo out to table here

    $i++;

}

Я добрался до базового запроса mysqli, а затем просто попытался воспроизвести цикл while выше:

if ($pending_stmt=$mysqli->prepare('SELECT * FROM transactions WHERE status = ?')) {
    $pending_stmt->bind_param('s', $status); //$status is set prior to if statement
    $pending_stmt->execute();
    $pending_stmt->store_result();
    $pending_stmt->fetch_all();

    $rows=$pending_stmt->num_rows();

    $i=0;

    while ($i < $rows) {
        $f1=$pending_stmt->fetch($i,'pcode');

        //echo out to table here

        $i++;
    }
}

Излишне говорить, что это не работает ... и после долгих поисков мне интересно, будет ли кто-нибудь достаточно любезен, чтобы дать мне несколько советов.

21.11.2012

  • Не могли бы вы быть более явным, чем это не работает? 22.11.2012
  • Это не работает... так как не возвращает никаких результатов. 22.11.2012

Ответы:


1

Неудивительно, что он не работает. Вы все смешиваете. Вам не нужны store_result(), fetch_all() или num_rows(). fetch() не может перейти к определенной строке и столбцу, как это делал mysql_result().
У вас есть два варианта решения этой проблемы.

  1. Использование get_result()

    $pending_stmt = $mysqli->prepare('SELECT columnA, columnB FROM transactions WHERE status = ?');
    $pending_stmt->bind_param('s', $status); //$status is set prior to if statement
    $pending_stmt->execute();
    $result = $pending_stmt->get_result();
    
    foreach ($result as $row) {
        echo $row['columnA'];
        echo $row['columnB'];
    }
    
  2. Использование store_result(), bind_result() и fetch()

    $pending_stmt = $mysqli->prepare('SELECT columnA, columnB FROM transactions WHERE status = ?');
    $pending_stmt->bind_param('s', $status); //$status is set prior to if statement
    $pending_stmt->execute();
    $pending_stmt->store_result(); // recommended, but not necessary
    $pending_stmt->bind_result($f1, $f2);
    
    while ($pending_stmt->fetch()) {
        echo $f1;
        echo $f2;
    }
    
02.12.2019

2

Пытаться

$pending_stmt->execute(array($status));
$result = $pending_stmt->fetchAll();

Я не понял, почему вы используете count var, попробуйте для каждого:

foreach($result as $item) {
    $f1 = $item['pcode'];
}
21.11.2012
  • Я пробовал это, но это не сработало. Я смотрю на банкомат bind_result(). 22.11.2012
  • Пожалуйста, смотрите журнал ошибок apache. Это должно сработать, если не попытаться проверить, правильно ли вы настроили $mysqli. 22.11.2012
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..