У меня есть код, который выглядит примерно так:
$cmd = new com('ADODB.command');
$cmd->activeConnection = $CONNECTION;
$sql = 'UPDATE MyTable SET WhenPlanned = ? WHERE ID = ?';
$cmd->commandText = $sql;
$p1 = $cmd->createParameter('WhenPlanned', adDate, adParamInput, 0, $dateVal)
$p2 = $cmd->createParameter('ID', adInteger, adParamInput, 4, $intVal);
$cmd->parameters->append($p1);
$cmd->parameters->append($p2);
$cmd->execute();
Это приводит только к следующей ошибке:
Неустранимая ошибка PHP: необработанное исключение ‘com_exception’ с сообщением ‘Источник: ADODB.Command
Описание: Приложение использует значение неправильного типа для текущей операции. ‘
Переменная $ dateVal является строковым представлением даты. Я пытался создать объект datetime PHP, чтобы передать безрезультатно … Кто-нибудь знает, как передать дату, которую параметр ADO будет принимать в качестве аргумента в PHP? Спасибо!
Я создал тестовую таблицу, чтобы изолировать и поэкспериментировать с параметрами даты, и нашел то, что сработало. Я думаю, это проблема форматирования даты. Я передавал даты, которые выглядели как строка в функции date () ниже, без форматирования.
$cmd = new com('ADODB.command');
$cmd->activeConnection = $CONNECTION[SYSTEM];
$sql = 'INSERT INTO TestDateTable (testdate) VALUES (?)';
$cmd->commandText = $sql;
$d = date('Y-m-d H:i:s', strtotime('10/26/2015'));
$p1 = $cmd->createParameter('testdate', adDate, adParamInput, 0, $d);
$cmd->parameters->append($p1);
$cmd->execute();
Это успешно вставил дату в моей таблице.
Других решений пока нет …