簡體   English   中英

ODBC SQL 更新語句問題,如果超過 32,000 個字符

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

這是問題所在:我有一個巨大的 xml 數據字符串存儲在表的(BLOB)字段中。 它有時會保存一些 70k 個字符或更多字符的字符串。 我使用 ODBC_Connection 將其拉出。

我可以導入(沒問題)。
我可以操縱 XML 並將其另存為字符串(沒問題)。
我可以將字符串保存回 mySQL 字段(沒問題)。

當我嘗試將它保存回我從中提取它的原始字段時,問題就出現了。 如果我保存少於 32,000 個字符的字符串,我們就是黃金。 如果字符串中有多個字符,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);  

謝謝您的幫助...

更新:這是連接到一個跨庫數據庫,而不是 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);  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM