PHPの文字列の長さ制限

WBOY
WBOYオリジナル
2016-06-23 13:22:154004ブラウズ

皆さん、こんにちは。私のデータは完全にデータベース (約 10,000 ワード) に保存されています。php を使用してデータを取得してこのフィールドのコンテンツを取得する場合、コンテンツの最初の部分だけが取得できて、すべてのコンテンツが取得できないのはなぜですか。 ?


ディスカッションへの返信 (解決策)

フィールドのタイプは何ですか?

出力を出力するために var_dump を使用し、その後 xdebug をインストールしたのでしょうか? xdebug をインストールして関数 var_dump を使用して出力すると、出力が切り捨てられます

データベースは mssql で、フィールドはテキストですtype なのでデータを取得 $v['memo'] =iconv("gbk", "UTF-8",$memo); 次に、echo と print_r を直接試してみましたが、表示された内容は不完全ですが、確かにあります。

コードは次のとおりです。ここで、メモは mssql のテキストです
function getInfo()
{
ini_set('mssql.datetimeconvert','0');
ini_set("mssql.textsize",200000); ;
ini_set("mssql.textlimit",200000);

$sql= "SET TEXTSIZE 65536";
$id = getgpc('id', 'G');
$sql="select * from [peihuo].[dbo].[S_advset] where id=".$id; fetch_array_all($sql) ;
if($arrdata)
{
foreach($arrdata as $k = > $v)
{
$memo=$v['memo']

$v['title']=iconv(" gbk", "UTF-8",$v['title']);
$v['memo']=iconv("gbk", "UTF-8",$memo);
echo $v['memo ']."
";//ここではすべてのコンテンツを読み取ることができません
$arr[$k] = $v; }
}
return $arr }
echo base64_encode($v['memo' ]);
結果を投稿してください
投稿できない場合は、
test.txtをネットワークディスクに置いてください

モデレーター、ファイルをネットワークディスクにアップロードしました
http://yun.baidu.com/xcloud/csdn/pan/disk/home
道路運送契約はデータに入力した内容であり、text.txtはデータの内容ですfile_put_contents('test.txt', $v['memo']);、エディターが使用します fckeditor です

間違った場所に置きました!

csdn のネットワーク ディスクは共有できません。閲覧できるのはあなただけです


ちょっと不思議ですが、phpmyadmin でデータベース内のデータが完成していることがわかりますか?
phpmyadmin に表示される内容が不完全な場合は、挿入中にインターセプトされたことを意味します。

データベースのフィールドタイプが varchar の場合、長さは 10,000 を超えるように設定する必要がありますが、それほど多くの値を設定する方法はないと推定されます
したがって、フィールドのタイプを text に変更する必要があります

次の場合にインターセプトされる可能性があります。 writing
あと、echoは使わずにprint_rを使ってください

データベースに保存されているデータに問題はありませんか?すでに切り捨てられていますか?
読み込み時、文字変換しない限り切り捨てられないはずです。


親愛なる上司、私はファイルを私のサービス http://www.56phw.com/test.rar にアップロードしました。データベース内にレコードが存在する必要があります。つまり、echo または print_r を実行すると、それらは完了します。内容 表示は不完全で、最初の 2000 単語程度しか表示できません。データベースは mssql2005 です。

function getInfo()
{
ini_set('mssql.datetimeconvert','0');

ini_set("mssql.textsize") ",200000);

ini_set("mssql.textlimit",200000);

$sql="SET TEXTSIZE 65536";
$this->db->query($sql);
$id = getgpc( 'id', 'G ');
$sql="select * from [peihuo].[dbo].[S_advset] where id=".$id; fetch_array_all; ($sql);
if($arrdata)
{
foreach($arrdata as $k => $v)
{
$memo=$v['memo']

$v['title']; =iconv("gbk" , "UTF-8",$v['title']);
$v['memo']=iconv("gbk" , "UTF-8",$memo);//これコンテンツは、ここでは不完全で表示されます。

Word文書を置くとはどういう意味ですか?

テキスト型の mssql テーブルのメモ フィールドに WORD の内容を入力するだけです

SQL Server 2005 の管理ツールで完全な内容を確認できますか?

ini_set("mssql.textsize",200000);
ini_set("mssql.textlimit",200000);
デフォルトは 4096 です
php_mssql 拡張機能を使用していますか?

mssql2005
ini_set("mssql.textsize",200000);
ini_set("mssql.textlimit",200000); で完全なレコードを確認できると思います。何が起こっているのかわかりません

データベースのクラス定義を見てください

私も最近この問題に遭遇しましたが、作成者が解決したかどうかはわかりません。

同時に、SQL ステートメントを直接実行すると、次のプロンプトが表示されます: メッセージ: DB-Library (ISQL など) または ODBC 3.7 以前を使用して、ntext データまたは Unicode 照合のみを使用する Unicode データをクライアントに送信することはできません。 (重大度 16)
テストとして CASE(test1 as TEXT) を追加する必要があります。

確認すると、

php.ini にそのような設定がありました。それがうまくいくかどうかを確認してください。

; 有効な範囲は 0 ~ 2147483647。デフォルト = 4096。


私の問題は、クエリ時に巨大な SQL 文字列をまとめて変数に格納したことです。 $sql の実行中にエラーが発生しました。$sql 変数の長さが制限されていることがわかりました。この大きな SQL を解決するには、少なくとも数百行のコードを使用する必要があります。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。