【发布时间】:2021-10-09 07:02:30
【问题描述】:
我们正在将我们的 MS SQL Server 从 SQL Server 2012 升级到当前版本。 我们正在使用 PDO 和在 CentOS Linux 上运行的 M$ ODBC 驱动程序。 PHP版本是7.4。
问题是,如果有一个(准备好的)条件,比如
WHERE variable = ?
变量是 VARCHAR 类型的,出现错误
[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]The data types varchar and text are incompatible in the equal to operator
示例代码如下:
$stmt = $db->prepare("SELECT * FROM Users WHERE user_login = ? AND user_application = ?");
$stmt->execute([$login, $app]);
user_login 和 user_application 都是 VARCHAR 列和 $login 和 $app 普通 PHP 字符串变量。
之前的 SQL Server 没有问题,比较正常。我不想通过所有代码库来在无数地方规避这个问题 - 所以 - 是否有一些设置(SQL 服务器、ODBC 驱动程序、PHP 配置......)在哪里再次设置“正确”?
【问题讨论】:
-
请Edit您的问题显示一些演示该问题的示例代码,包括对
prepare和bindValue的调用。 -
添加示例代码...
-
可能值得尝试 SQLSRV 驱动程序。它仍然会在下面使用您的 ODBC 驱动程序,但可能会以不同的方式处理类型。
-
对不起,忘了说代码是在 CentOS-linux 上运行的,AFAIK SQLSRV-driver 是 Windows only?
标签: php sql-server pdo