Вы возвращаете только одну запись в данных 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;
?>