I nie wydają się być w stanie uzyskać proste WHERE z parametrem do pracy, jestem ciągle otrzymuję komunikat o błędzie:PHP PDO ODBC - Typy danych są niezgodne w równym operatora
[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)
Próbowałem tego zapytania na wiele różnych sposobów, np.
Nienazwana:
$query = $DBH->prepare("SELECT TOP 1 * FROM bksb_Resources WHERE ResourceType = ?");
$query->execute(array('assessment'));
Unnamed i stosując ustawienie bindValue go na ciąg
$query = $DBH->prepare("SELECT TOP 1 * FROM bksb_Resources WHERE ResourceType = ?");
$query->bindValue(1, 'assessment', PDO::PARAM_STR);
$query->execute();
nazwanych i korzystania bindParam aby ustawić go na wyrażenie:
$val = 'assessment';
$query = $DBH->prepare("SELECT TOP 1 * FROM bksb_Resources WHERE ResourceType = :myp");
$query->bindParam(':myp', $val, PDO::PARAM_STR);
$query->execute();
Ale bez względu na to jak ja zrób to, zawsze otrzymuję ten komunikat o błędzie.
Kolumna na pytanie typu: varchar (max), więc prawdopodobnie jest przy założeniu, że parametr wysyłany jest typu „text”, nawet kiedy podać go jako wartość ciągu (char, varchar)
Nie mogę zmienić bazy danych, tak jak w przypadku innego oprogramowania.
Co to oznacza? Naprawdę nie chcę mieć CAST za każdym razem, gdy robię klauzulę where, czy to jest to, co wszyscy robią?).
Dziękuję.
Masz ten sam problem ... wymyśliłeś to? – MizAkita
Czy próbowałeś "SELECT TOP 1 * FROM bksb_Resources WHERE ResourceType LIKE?" ˙'? Jeśli nie użyjesz symboli wieloznacznych, będzie funkcjonował prawie identycznie jak '='. –