语法错误或访问违规;当使用PDO和SQL Server插入日期时


"Syntax error or access violation" when inserting dates using PDO and SQL Server

我试图在PHP中使用PDO添加两个简单的字符串和一个日期到SQL Server。我目前使用以下代码:

$data = array(
    'Omschrijving' => 'Mijn mooie omschrijving...',
    'Toelichting' => 'Mijn leuke toelichting...'
);
# Insert data
$STH = $DBH->prepare("INSERT INTO memo (Datum, Omschrijving, Toelichting) VALUES (NOW(), :Omschrijving, :Toelichting)");
$STH->execute($data);

没有日期也可以正常工作,但由于某种原因,当我尝试添加日期时,它会给我以下错误:

SQLSTATE[42000]: Syntax error or access violation: 8180 [FreeTDS][SQL Server]Statement(s) could not prepared.日志含义(SQLExecute[8180] at/builddir/build/build/php-5.6.9/ext/pdo_odbc/odbc_stmt.c:254)

有人知道我做错了什么吗?

提前感谢!

Now()是一个MySQL函数。GetDate()是sql服务器的等价物。这里是他们关于这个函数的文档,https://msdn.microsoft.com/en-us/library/ms188383.aspx.

所以提供的代码应该变成:

$data = array(
    'Omschrijving' => 'Mijn mooie omschrijving...',
    'Toelichting' => 'Mijn leuke toelichting...'
);
# Insert data
$STH = $DBH->prepare("INSERT INTO memo (Datum, Omschrijving, Toelichting) VALUES (GETDATE(), :Omschrijving, :Toelichting)");
$STH->execute($data);