Search code examples
phpdatabaseodbcms-access-2007

Hoe to set odbc dateformat in query


I have fetch data from Ms Access database to PHP JSON Format. I have Pass date Parameter through in query. database datatype is date/time. Need date format in query mm/dd/yyyy.

I have give Result

ConnectedResource id #4{"status":0,"0":[]}

print_r($stmt) give

Result Resource id #4 and gone else statment.

<?php

    $reg = $_GET['reg'];
    $fdate = $_GET['fdate'];
    $tdate = $_GET['tdate'];
    $yid = $_GET['yid'];


    $sql = "select a.RegNo,c.Standard,b.RollNo,d.Division,b.Std_Name as StudentName,AttendanceDate,Attendance_Type,Remark 
                                         from (((Attendance_mas as a 
                                         inner join Std_Reg as b on a.RegNo = b.RegNo) 
                                         inner join StandardMaster as c on a.Standard = c.stdid) 
                                         inner join DivisionMaster as d on a.Division =d.DivisionID) 
                                         where a.RegNo= $reg and a.AttendanceDate between ($fdate) and 
                                         ($tdate1) and a.yearid = $yid Order by AttendanceDate desc";
    //$sql = "select * from Std_Reg";

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

print_r($stmt);
$result = [];
do {
    while ($row = odbc_fetch_array($stmt)){
       $result[] = $row; 
    }
} while (odbc_next_result($stmt));

if(count($result)>0)
{
    $result1['status']=1;//"Login successfully";
    array_push($result1,$result);
}
else
{
     //$result[]="null";
    $result1['status']=0;//"Record not found";
    array_push($result1,$result);
}
odbc_free_result($stmt);
odbc_close($conn); //Close the connection first

echo json_encode($result1); //You will get the encoded array variable

?>

Solution

  • I recommand using PDO PREPARED STATEMENT to bind parameters to your query:

    $reg = $_GET['reg'];
    $fdate = date("m/d/Y", strtotime($_GET['fdate']));//THis will format the date
    $tdate = date("m/d/Y", strtotime($_GET['tdate']));
    $yid = $_GET['yid'];
    
    $sql = "select a.RegNo,c.Standard,b.RollNo,d.Division,b.Std_Name as StudentName,AttendanceDate,Attendance_Type,Remark 
                                         from (((Attendance_mas as a 
                                         inner join Std_Reg as b on a.RegNo = b.RegNo) 
                                         inner join StandardMaster as c on a.Standard = c.stdid) 
                                         inner join DivisionMaster as d on a.Division =d.DivisionID) 
                                         where a.RegNo= ? and a.AttendanceDate between (?) and 
                                         (?) and a.yearid = ? Order by AttendanceDate desc";
    
    $res = odbc_prepare($conn, $sql);
    if(!$res) die("could not prepare statement ".$sql);
    $parameters = array($reg,$fdate,$tdate,$yid);
    if(odbc_execute($res, $parameters)) {
       //Fetch the result
    } else {
      // handle error
    }