«Синтаксическая ошибка или нарушение прав доступа» при вставке дат с использованием PDO и SQL Server

1

Я пытаюсь добавить две простые строки и одну дату на SQL Server, используя PDO в PHP. В настоящее время я использую следующий код:

$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] в /builddir/build/BUILD/php-5.6.9/ext/pdo_odbc/odbc_stmt.c:254)

Кто-нибудь знает, что я делаю неправильно?

Заранее спасибо!

  • 0
    @chris85 chris85 Нет, ключам не нужны двоеточия, но они могут. Оба способа работают
  • 0
    Спасибо, что заметили @chris85 chris85, я удалил тег "MySQL", он не применяется. Я использую SQL Server.
Показать ещё 5 комментариев
Теги:
sql-server
timestamp
pdo

1 ответ

2
Лучший ответ

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);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню