"语法错误或访问冲突"使用PDO和SQL Server

时间:2015-05-29 15:30:33

标签: php sql-server pdo timestamp

我试图在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]:语法错误或访问冲突:8180 [FreeTDS] [SQL Server]语句无法准备。 (SQLExecute [8180] at /builddir/build/BUILD/php-5.6.9/ext/pdo_odbc/odbc_stmt.c:254)

有谁知道我做错了什么?

提前致谢!

1 个答案:

答案 0 :(得分:2)

Now()是一个MySQL函数。 GetDate()是sql-server的等价物。这是他们关于函数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);