【问题标题】:How to update GUID in MS SQL via PHP/ODBC?如何通过 PHP/ODBC 更新 MS SQL 中的 GUID?
【发布时间】:2010-02-15 21:14:31
【问题描述】:

我的任务是让两个基于 MS SQL 的产品同步。我的前任满足于根据姓名和地址的组合来匹配记录,但是两个系统都有一个 GUID,而且只有一个系统在实际使用它。所以我的想法是匹配我现有的记录并将 GUID 从一个数据库复制到另一个。但我似乎无法使用 PHP 和 ODBC 更新 MS SQL 中的 GUID。查询以静默方式失败。如果我回显查询并将其复制/粘贴到 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 中也能正常工作。

有什么想法吗?

提前致谢!

【问题讨论】:

  • Profiler 显示的实际执行情况是什么?
  • 我对 PHP 有点陌生(我的上一份工作是做桌面应用程序,所以我已经有一段时间没有做 Web 的东西了),所以请原谅我的无知,但我怎么知道探查器正在显示?

标签: php sql-server-2005 odbc guid


【解决方案1】:

当您从第一台服务器查询数据时,请确保将数据转换为 VARCHAR()

SELECT CONVERT(VARCHAR(36),guidCol) 作为 guid 从表

然后当你插入时,你需要将它转换回一个 GUID 值,因为它在 PHP 中已经是一个字符串。

更新表 SET guidCol = CAST(UNIQUEIDENTIFIER, '" . $this->GUID . "')

【讨论】:

  • 谢谢,埃里克,但没有骰子。尽管 odbc_error 没有显示任何错误,但仍然无法通过 odbc_exec 工作。但是如果我将查询复制到 SQL Developer 中,它执行得很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-30
相关资源
最近更新 更多