Не удается обновить поле даты и времени MS SQL с помощью PHP

0

Я пытаюсь обновить поле DATETIME на моем сервере MSSQL (2012) со следующим кодом PHP:

$currentDate = date('Y-m-d H:i:s');
            $query = "  UPDATE Members
                        SET lastNotificationCheck = '?'
                        WHERE memberID=?;";
            $stmt = sqlsrv_prepare($this->con, $query, array(&$currentDate, &$_SESSION['member_id']));
            $execute = sqlsrv_execute($stmt);

            if ($execute === false) {
                die( print_r( sqlsrv_errors(), true));

                return false;
            } else {
                return true;
            }

Приведенное выше возвращает следующую ошибку:

Array ( [0] => Array ( [0] => 22018 [SQLSTATE] => 22018 [1] => 245 [code] => 245 [2] => [Microsoft][SQL Server Native Client 11.0][SQL Server]Conversion failed when converting the varchar value '2014-11-10 11:30:35' to data type int. [message] => [Microsoft][SQL Server Native Client 11.0][SQL Server]Conversion failed when converting the varchar value '2014-11-10 11:30:35' to data type int. ) )

Странная вещь (я думаю) заключается в том, что следующий запрос отлично работает в SQL Server Management Studio:

UPDATE Members
SET lastNotificationCheck = '2014-11-10 11:18:00'
WHERE memberID=1000004;
    enter code here

Я попытался сгенерировать дату несколькими способами (date() и new DateTime()), но запрос всегда терпит неудачу при выполнении через PHP.

Таблица участников:

CREATE TABLE [dbo].[Members](
[memberID] [int] IDENTITY(1,1) NOT NULL,
[membername] [varchar](20) NOT NULL,
[email] [varchar](50) NOT NULL,
[password] [varchar](50) NOT NULL,
[joindate] [datetime] NOT NULL,
[lastlogin] [datetime] NULL,
[lastNotificationCheck] [datetime] NULL

Надеюсь, кто-то может понять, что может быть неправильным.

Теги:
sql-server
datetime

1 ответ

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

Удалите кавычки в '?', Они будут добавлены автоматически, если это значение является строкой. Если вы добавите их, результат будет ''value''.

$query = "  UPDATE Members
  SET lastNotificationCheck = ?
  WHERE memberID=?;";
$stmt = sqlsrv_prepare($this->con, $query, array(&$currentDate, &$_SESSION['member_id']));
  • 0
    В качестве альтернативы вы можете просто использовать SET lastNotificationCheck=NOW() .

Ещё вопросы

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