不相容我似乎並沒有能夠得到一個簡單的WHERE以參數子句來工作,我不斷收到錯誤消息說:PHP PDO ODBC - 數據類型是等於運算符
[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(最大),所以推測它是假設的參數被髮送的類型是「文本」,甚至當我指定它是一個字符串值(CHAR,VARCHAR)
我無法更改數據庫,因爲它是用於另一個軟件的。
這是怎麼回事?我真的不想每次都去CAST做一個像這樣的where子句(或者每個人都做什麼?)。
謝謝。
有同樣的問題......你知道了嗎? – MizAkita
你試過'「SELECT TOP 1 * FROM bksb_Resources WHERE ResourceType LIKE?」˙'?如果你不使用通配符,它的功能幾乎與'='一樣。 –