Добавление # при вставке даты в php не работает - PullRequest
0 голосов
/ 15 января 2019

Я много читал о вставке даты в MS Access через PHP. Однако, основываясь на их предложениях, я должен использовать # при вставке дат. Тем не менее, # в PHP используется для комментирования строки кода. Моя проблема сейчас заключается в том, что я не могу вставить / обновить даты в моей базе данных

    <?php
    session_start();
    $blnPage = $_SESSION['blnCount'];

    try{
        if ($blnPage == "EAP"){
            if (isset($_POST['AudPlanNo']) && !empty($_POST['AudPlanNo'])){

                $txtAPNo = trim($_POST['AudPlanNo']);
                $txtAPUnivNo = trim($_POST['AudUnivNo']);
                $txtAPBackground = trim($_POST['APBackground']);
                $txtAPCoverage = trim($_POST['APCoverage']);
                $txtAPObjective = trim($_POST['APObjective']);
                $txtAPMethodology = trim($_POST['APMethodology']);
                $txtAPWTManhours = trim($_POST['APWTManhours']);
                $txtAPWTDate2 = strtotime($_POST['dWTDate']);
                $txtAPWTDate = date("m-d-Y",$txtAPWTDate2);
                $txtAPFWManhours = trim($_POST['APFWManhours']);
                $txtAPFWDate2 = strtotime($_POST['dFWTDate']);
                $txtAPFWDate = date("m-d-Y",$txtAPFDate2);
                $txtAPRTManhours = trim($_POST['APRTManhours']);
                $txtAPRTDate2 = strtotime($_POST['dRTDate']);
                $txtAPRTDate = date("m-d-Y", $txtAPRTDate2);

                $dbPath = $_SERVER["DOCUMENT_ROOT"]."/msaccess/dbAMS.accdb";
                if(!file_exists($dbPath))
                {
                    die("database not found");
                }
                $dbh = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; Dbq=$dbPath; Uid=Admin; pwd=;");

                $sql = "UPDATE tblAudPlan SET tblAudPlan.[Background] = '$txtAPBackground', tblAudPlan.[AudObjective] = '$txtAPObjective', tblAudPlan.[AudCoverage] = '$txtAPCoverage', tblAudPlan.[ApproachMethodology] = '$txtAPMethodology', tblAudPlan.[WTManhours] = '$txtAPWTManhours',tblAudPlan.[WTDate] = '#$txtAPWTDate#' WHERE tblAudPlan.[AudPlanNo] = '$txtAPNo'";
                $result = $dbh->query($sql);
                $row = $result->fetch();
                echo 1;   
            }
            else{
                echo 0;
            }
        }

    }

    catch(PDOException $e)
    {
        echo $e->getMessage();
    }
    $dbh = null;
?>

А вот так я показываю свой код

<div class="col-75">
<input type="date" placeholder = "YYYY-mm-dd" class ="dWTDate" id="dWTDate" name="dWTDate" value="<?php $datetime1 = $_SESSION['sesAPWTDate']; echo date("Y-m-d",strtotime($datetime1));?>">
</div>

Я также пробовал "m-d-Y", "mm-dd-YYYY", но безрезультатно. Я действительно не знаю, что делать сейчас.

Когда я попытался использовать одиночный # в начале и в конце, мой код будет таким enter image description here

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Я немного поэкспериментировал, чтобы прояснить это в моей голове:

Я написал крошечный скрипт для проверки;

<?php

$alpha   = "myvar";
$bravo   = "UPDATE myTable SET mycol='#$alpha#' WHERE a = 1";
$charlie = "UPDATE myTable SET mycol=#$alpha#   WHERE a = 1";
$delta   = <<< EOT
UPDATE myTable SET mycol=#$alpha#  WHERE a = 1
EOT;


echo "a:\n";
echo $alpha;
echo "\n";

echo "b:\n";
echo $bravo;
echo "\n";

echo "c:\n";
echo $charlie;
echo "\n";
echo "d:\n";
echo $delta;
echo "\n";

... который я затем запустил в командной строке, используя php test.php

В результате чего:

a:
myvar
b:
UPDATE myTable SET mycol='#myvar#' WHERE a = 1
c:
UPDATE myTable SET mycol=#myvar#   WHERE a = 1
d:
UPDATE myTable SET mycol=#myvar#  WHERE a = 1

Что означает, что мои и @ MH2K9 предложили написать $sql = "UPDATE tblAudPlan SET WTDate = #$txtAPWTDate# WHERE AudPlanNo = '$txtAPNo'";

должен работать.

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

Моя версия php:

PHP 7.0.33-0 + deb9u1 (cli) (сборка: 7 декабря 2018 11:36:49) (NTS)
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
с Zend OPcache v7.0.33-0 + deb9u1, Copyright (c) 1999-2017, Zend Technologies

0 голосов
/ 15 января 2019

Обернуть SQL двойными кавычками

$sql = "UPDATE tblAudPlan SET WTDate = #$txtAPWTDate# WHERE AudPlanNo = '$txtAPNo'";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...