Разбор запроса mdb на php - PullRequest
       1

Разбор запроса mdb на php

0 голосов
/ 30 апреля 2018

У меня есть такой код

<?php
    $mdb_file = realpath('../PEB_MDB/dbPEB.mdb');
    $dsn='Driver={MSAccess};DBQ='.$mdb_file.';';
    //$mdb_file = $_SERVER['DOCUMENT_ROOT']."/sapfiles/web_supp/PEB_MDB/dbPEB.mdb";
    $user = "";
    $password = "MumtazFarisHana";
    $conn = odbc_connect($dsn,$user,$password);

    var_dump($conn);

    $sql = "SELECT a.NAMABELI,s.URBRG1,a.NAMABELI,a.NEGBELI,a.NEGTUJU,a.CAR,a.KDKTR,a.PELMUAT,
        a.NODAFT,a.TGDAFT,a.FOB,d.NoDok,d.TgDok FROM (tblpebhdr AS a INNER JOIN tblpebdok AS d 
        ON a.CAR = d.CAR) INNER JOIN tblpebdtl AS s ON a.CAR = s.CAR 
        WHERE d.KdDok='380' and a.TGDAFT>=#01/jan/2018# AND a.TGDAFT<=#01/Apr/2018#";
    $rs = odbc_exec($conn, $sql) or die(odbc_errormsg());
    var_dump($rs);
?>

Когда я пытаюсь запустить этот код, он говорит Couldn't parse SQL, если я изменяю свой запрос на SELECT * FROM tblpebhdr, он работает слаженно, но почему мой первый запрос вообще не работает? Это потому, что хэштег (#)? или что-то еще?

1 Ответ

0 голосов
/ 30 апреля 2018

Ваш синтаксис правильный. Доступ к синтаксису SQL, поэтому попробуйте удалить одно поле за раз, и вы должны найти имя поля, вызывающего проблемы.

Кроме того, никогда не используйте текстовые месяцы в фильтрах, так как ожидается, что имена будут локализованы, и - хотя принят «обратный» формат США, поэтому он не может быть источником вашей ошибки, если TGDAFT имеет тип данных DateTime - установите привычку использовать последовательность ISO гггг-мм-дд:

a.TGDAFT>=#2018/01/01# AND a.TGDAFT<=#2018/04/01#";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...