问题是:我有一个巨大的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);