все получить данные из базы данных MS Access в PHP - PullRequest
0 голосов
/ 06 апреля 2019

Данные извлекаются из базы данных MS Access 2007 в php с использованием драйвера odbc. ВСЕ данные извлекаются с использованием запроса, но получается только одна запись, другие данные не извлекаются.

ниже запрашивает три записи, но извлекает только одни данные. какая проблема ниже кода в php? как получить все данные, используя запрос из этого кода, что это меняет?

 <?PHP

    include 'Connection2.php';



    $sql = "select FYearID,Description,FromDate,ToDate  from mstFinancialyear";


    $stmt = odbc_exec($conn, $sql);
    //print_r($stmt);
    $rs = odbc_exec($conn, "SELECT Count(*) AS counter from mstFinancialyear");

    //print_r($stmt);

    $arr = odbc_fetch_array($rs);
    $arr1 = $arr['counter'];
    $result = array(); 

    //print_r($arr);


     if (!empty($stmt)) {

            // check for empty result
            if ($arr1 > 0) {
    // print_r($stmt);

                $stmt1 = odbc_fetch_array($stmt);




               $year = array();
                $year['FYearID'] = $stmt1['FYearID'];
                $year['Description'] = $stmt1['Description'];
                $year['FromDate'] = $stmt1['FromDate'];
                $year['ToDate'] = $stmt1['ToDate'];


                // success
                $result["success"] = 1;

                // user node
                $result["year"] = array();


                array_push($result["year"], $year); 

                echo json_encode($result);

                //return true;

            } else {
                // no product found
                $result["success"] = 0;
                $result["message"] = "No product found";




                echo json_encode($result);


            }


            odbc_close($conn); //Close the connnection first
    }

    ?>

1 Ответ

0 голосов
/ 06 апреля 2019

Вы возвращаете только одну запись в данных JSON, потому что вы не выполняете итерацию по набору записей.Сначала я неправильно прочитал, что вы дважды вызывали odbc_fetch_array для одного и того же набора записей, но при ближайшем рассмотрении увидите, что, насколько я могу судить, подразумевается, что один запрос подразумевает наличие каких-либо записей, которые могут быть возвращены из основного запроса.Переписанный код, приведенный ниже, не был протестирован - у меня нет средств сделать это - и имеет только один запрос, но пытается выполнить итерацию цикла.

Я включил count в качестве подзапроса в основной запрос, если по какой-то причине требовалось количество записей - но я не думаю, что это так.

<?php

    include 'Connection2.php';

    $result=array();

    $sql = "select 
            ( select count(*) from `mstFinancialyear` ) as `counter`,
            `FYearID`, 
            `Description`,
            `FromDate`,
            `ToDate` 
        from 
        `mstFinancialyear`";

    $stmt = odbc_exec( $conn, $sql );

    $rows = odbc_num_rows( $conn );
    /* odbc_num_rows() after a SELECT will return -1 with many drivers!! */


    /* assume success as `odbc_num_rows` cannot be relied upon */
    if( !empty( $stmt ) ) {

        $result["success"] = $rows > 0 ? 1 : 0;
        $result["year"] = array();

        /* loop through the recordset, add new record to `$result` for each row/year */
        while( $row=odbc_fetch_array( $stmt ) ){ 

            $year = array();
            $year['FYearID'] = $row['FYearID'];
            $year['Description'] = $row['Description'];
            $year['FromDate'] = $row['FromDate'];
            $year['ToDate'] = $row['ToDate'];

            $result["year"][] = $year;

        }
        odbc_close( $conn );
    }

    $json=json_encode( $result );
    echo $json;
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...