Non mi sembra di essere in grado di ottenere una semplice clausola WHERE con un parametro di lavorare, sono costantemente ottenendo un messaggio di errore che dice:PHP DOP ODBC - I tipi di dati incompatibili in uguale all'operatore
[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)
Ho provato questa query in molti modi diversi, ad es.
Senza nome:
$query = $DBH->prepare("SELECT TOP 1 * FROM bksb_Resources WHERE ResourceType = ?");
$query->execute(array('assessment'));
Senza nome e l'utilizzo bindValue impostandolo stringa
$query = $DBH->prepare("SELECT TOP 1 * FROM bksb_Resources WHERE ResourceType = ?");
$query->bindValue(1, 'assessment', PDO::PARAM_STR);
$query->execute();
nome e l'utilizzo di BindParam per impostarla su stringa:
$val = 'assessment';
$query = $DBH->prepare("SELECT TOP 1 * FROM bksb_Resources WHERE ResourceType = :myp");
$query->bindParam(':myp', $val, PDO::PARAM_STR);
$query->execute();
Ma non importa quanto mi fallo, ricevo sempre questo messaggio di errore.
La colonna in questione è di tipo: varchar (max), quindi presumibilmente sta assumendo il parametro viene inviato è di tipo 'text' anche quando a specificare che sia un valore stringa (char, varchar)
Non riesco a cambiare il database come per un altro software.
Qual è il modo per aggirare questo? Davvero non voglio dover CAST ogni volta che faccio una clausola in cui questo (o è quello che fanno tutti?).
Grazie.
Avendo lo stesso problema ... l'hai capito? – MizAkita
Hai provato '" SELEZIONA TOP 1 * DA bksb_Resources DOVE TIPO ResourceType? "˙'? Se non usi i caratteri jolly, funzionerà quasi identicamente come '='. –