2011-07-19 6 views
0

問題は次のとおりです。テーブルの(BLOB)フィールドに格納されているxmlデータの巨大な文字列が1つあります。それは時々いくつかの文字列を70k文字以上保持します。私はODBC_Connectionを使用してそれを引き出します。32,000文字以上のODBC SQL更新文問題

インポートできます(問題ありません)。
XMLを操作して文字列として保存できます(問題ありません)。
文字列をmySQLフィールドに保存できます(問題ありません)。

問題は、元のフィールドに戻すときに問題が発生します。 32,000文字未満の文字列を保存すると、私たちは金色になります。文字列にその文字以上の文字がある場合、BAM。このエラーメッセージが表示されます。助けのための

// 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を:これは、InterBaseデータベースではなく、MS SQLに接続されている。ここ

(!) 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コードです。また、私は別のODBCドライバを使用してみました、そして同じメッセージを得たが、わずかに高い文字許容度:42000の代わりに、37000.

助けてください....

答えて

1

はあなたにデータを渡すみましたパラメータ?

例えば:

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

私は同じ結果と同様にこれを試してみました。お手伝いをしてくれてありがとうございました。私は上記のいくつかの追加情報を投稿しました。私はまだ立ち往生している。 –

+0

PHP ibase拡張機能を試してみましたか? http://www.php.net/manual/en/book.ibase.php –

+0

ありがとうございました。あなたの元のアドバイスが正しい軌道上にありました。私はあなたのヒントに基づいて答えを掲示しました。感謝万円! –