我似乎无法获得一个带参数的简单WHERE子句,我不断收到一条错误消息:
原文链接:https://www.f2er.com/php/444957.html[Microsoft][ODBC sql Server Driver][sql Server]The data types varchar(max) and text are incompatible in the equal to operator. (sqlExecute[402] at ext\pdo_odbc\odbc_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子句时(或者每个人都这么做?).
谢谢.