ホームページ >バックエンド開発 >PHPチュートリアル >PHPの文字列の長さ制限
皆さん、こんにちは。私のデータは完全にデータベース (約 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 です
間違った場所に置きました!
ちょっと不思議ですが、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.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 を解決するには、少なくとも数百行のコードを使用する必要があります。