Как обновить GUID в MS SQL через PHP / ODBC? - PullRequest
2 голосов
/ 16 февраля 2010

Мне было поручено синхронизировать два продукта на основе MS SQL. Мой предшественник был доволен сопоставлением записей, основанных на комбинации имени и адреса, но обе системы имеют GUID, и фактически только одна его использует. Поэтому я подумал о том, чтобы сопоставить существующие записи и скопировать GUID из одной базы данных в другую. Но я не могу обновить GUID в MS SQL, используя PHP и ODBC. Запрос молча завершается неудачей. Если я повторяю запрос и копирую / вставляю его в SQL Management Studio или Oracle SQL Developer, он работает нормально. Упрощенная версия моего запроса выглядит так:

$SQL = "UPDATE Contact SET SifGuid = CONVERT(VARCHAR(36), '" . $this->GUID . "') ";
$SQL .= "WHERE contactID = " . $this->POSID . ";

Сбой при отправке запроса через odbc_exec. Но, как я уже говорил, тот же самый точный запрос прекрасно работает в SQL Management Studio или Oracle SQL Developer.

Есть идеи?

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

1 Ответ

2 голосов
/ 18 февраля 2010

Когда вы запрашиваете данные с первого сервера, убедитесь, что вы конвертируете данные в VARCHAR ()

SELECT CONVERT(VARCHAR(36),guidCol) AS guid FROM table 

Затем, когда вы вставляете, вам нужно привести его обратно к значению GUID, так как это уже строка в PHP.

UPDATE table SET guidCol = CAST(UNIQUEIDENTIFIER, '" . $this->GUID . "') 
...