如果超过32,000个字符,ODBC SQL update语句错误


ODBC SQL update Statement issue if more than 32,000 characters

问题是:我有一个巨大的xml数据字符串存储在表中的一个(BLOB)字段中。它可以容纳一些字符串,有时可以容纳70k个字符或更多。我用ODBC_Connection把它拉出来。

我可以导入(没问题)。
我可以操作XML并将其保存为字符串(没问题)。
我可以将字符串保存回mySQL字段(没问题)。

问题来了,当我试图把它保存回原来的字段,我把它从。如果我保存的字符串少于32,000个字符,我们就成功了。如果字符串中有超过100个字符,BAM。我得到这个错误信息。

( ! ) Warning: odbc_exec() [function.odbc-exec]: SQL error: [DataDirect][ODBC InterBase
driver][InterBase]Dynamic SQL Error, SQL error code = -104, token size exceeds limit,
SQL state 37000 in SQLExecDirect in ...'Test'index4.php on line 129 Call Stack
#   Time    Memory  Function    Location
1   0.0011  482872  {main}( )   ..'index4.php:0
2   0.1260  1033760 odbc_exec ( )   ..'index4.php:129

下面是我使用的PHP代码,以防万一:

// Now save it back to the system
$conn=odbc_connect($DBNAME_O,$DBUSER_O,$DBPW_O);
if (!$conn)
{exit("Connection Failed: " . $conn);}
echo $tempFileXML;
$sql="UPDATE EHR_VISITS SET RECORD='$tempFileXML' WHERE EHR_VISITS_ID='1396'";
//  echo $theData;
$rs=odbc_exec($conn,$sql);
odbc_close($conn);  

谢谢你的帮助…

UPDATE:这是连接到一个跨数据库,而不是MS SQL。此外,我尝试使用不同的ODBC驱动程序,并得到了相同的消息,但字符容错略高:42000而不是37000。

请帮忙…

您是否尝试过将数据作为参数传入?

例句:

$sql = UPDATE EHR_VISITS SET RECORD=? WHERE EHR_VISITS_ID='1396'; 
$stmt = odbc_prepare($conn, $sql); 
$rs = odbc_execute($stmt, $tempFileXML);