加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

PHP PDO ODBC – 数据类型在等于运算符中不兼容

发布时间:2020-05-25 09:07:22 所属栏目:PHP 来源:互联网
导读:我似乎无法获得一个带参数的简单WHERE子句,我不断收到一条错误消息: [Microsoft][ODBC SQL Server Driver][SQL Server]The data types varchar(max) and text are incompatible in the equal to operator. (SQLExecute[402] at extpdo_odbcodbc

我似乎无法获得一个带参数的简单WHERE子句,我不断收到一条错误消息:

[Microsoft][ODBC SQL Server Driver][SQL Server]The data types varchar(max) and text are incompatible in the equal to operator. (SQLExecute[402] at extpdo_odbcodbc_stmt.c:254)

我已经尝试过多种不同的方式,例如

无名:

$query = $DBH->prepare("SELECT TOP 1 * FROM bksb_Resources WHERE ResourceType = ?");
$query->execute( array('assessment') );

未命名并使用bindValue将其设置为字符串

$query = $DBH->prepare("SELECT TOP 1 * FROM bksb_Resources WHERE ResourceType = ?");
$query->bindValue(1,'assessment',PDO::PARAM_STR);
$query->execute(  );

命名并使用bindParam将其设置为字符串:

$val = 'assessment';
$query = $DBH->prepare("SELECT TOP 1 * FROM bksb_Resources WHERE ResourceType = :myp");
$query->bindParam(':myp',$val,PDO::PARAM_STR);
$query->execute(  );

但无论我怎么做,我总是得到这个错误信息.

有问题的列是类型:varchar(max),因此假设发送的参数是’text’类型,即使我将其指定为字符串值(char,varchar)

我无法更改数据库,因为它是另一个软件.

这是怎么回事?我真的不希望每次我做一个这样的where子句时(或者每个人都这么做?).

谢谢.

我们遇到了类似的问题,在我们的案例中,我们在/etc/odbc.ini文件中有以下内容:
[ServerAlias]
Driver = FreeTDS
Server = 1.2.3.4
PORT = 1433
TDS_Version = 8.0

我们发现,如果将TDS_Version更改为7.2,则所有绑定查询都会正常工作.

[ServerAlias]
Driver = FreeTDS
Server = 1.2.3.4
PORT = 1433
TDS_Version = 7.2

我不确定这个的原因,但我怀疑它可能记录在某个地方.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读