0

フィールドの1つとしてhtmlの説明が含まれているmysqlデータベースがあります。この説明は私の管理下にはなく、自動的に取得されて挿入されます。これらの説明の1つの例を次に示します。

http://www.nomorepasting.com/getpaste.php?pasteid=22492

データは元々アクセスデータベースからエクスポートされたものであり、そのまま残っているようです。エクスポートされたデータの例は次のとおりです。

http://www.yousendit.com/transfer.php?action=batch_download&batch_id=TTZtWmdsT01kMnVGa1E9PQ

HTMLの説明を含む変数をポップアップウィンドウに出力して、そのまま表示しようとしています。これを行うために使用しようとしているコードは次のとおりです。

http://www.nomorepasting.com/getpaste.php?pasteid=22498

ただし、次のhtmlコードが生成されます。

http://www.nomorepasting.com/getpaste.php?pasteid=22462

ページの残りの部分が表示されないようにする閉じられていないスタイルタグがあり、ポップアップウィンドウが開くのを防ぎます。mysqlのデータは問題ないように見えるので、私が知る限り、これをphpの問題に絞り込みました。

編集:

このコードを使用して、データベースからarticle_Descのみを選択しようとしました。

http://www.nomorepasting.com/getpaste.php?pasteid=22494

結果としてこれを生み出したのは:

http://www.nomorepasting.com/getpaste.php?pasteid=22496

edit2:

スタイルタグを含む国コード変数に問題があるようです。これを削除すると、画像が表示され、ポップアップウィンドウが作成されます。最後に貼り付けたリンクとよく似たHTML結果のみが表示されます。データベース内のデータは正しいようですが、この問題の原因は何でしょうか。

4

2 に答える 2

2

この質問を少し思い出します。

ここにPHPコードが表示されます

child1.document.write(' . json_encode($row2["ARTICLE_DESC"]) . ');

ここにHTMLコードで

child1.document.write("");

これは、json_encode($row2["ARTICLE_DESC"]) が "" を出力することを意味します。そして、json_encode('') は "" を出力するので、これは $row2["ARTICLE_DESC"] が空であることを意味します。

編集:

$sql="SELECT * FROM Auctions WHERE ARTICLE_NO ='$pk'";
$sql2="SELECT ARTICLE_DESC FROM Auctions WHERE ARTICLE_NO ='$pk'";

最初の $sql にはすでに ARTICLE_DESC が含まれているはずなので、2 番目の sql2 は必要ありません。そう

  1. フィールド ARTICLE_DESC は、その ARTICLE_NO に対して空です。
  2. ARTICLE_DESC は正しい名前ではありません。
  3. ARTICLE_DESC は別のテーブルにあります。

編集時に編集:

$query = "SELECT article_desc FROM Auctions WHERE ARTICLE_NO ='220288560247'";

名前は ARTICLE_DESC ではなく article_desc です。

コメントの編集:

ARTICLE_DESC をすべて article_desc に変更します。

EDIT HTMLコードを取得したので、置き換える必要があります

json_encode($row['article_desc'])

これとともに

str_replace(array("\n", "\r", "\t"), array('', '', ''), $row['article_desc']);

これは素敵な機能で行うことができます。印刷するすべてのhtmlコードが含まれていることを覚えておいてください

<!-- text -->

そのため、実際には新しいウィンドウに何も表示されません...

<!-- +++++++++++++++++++++++++ Bitte ändern Sie im eigenen Interesse nichts an diesem Code! ++++++++++++++++++++++++ -->
<!-- +++++++++++++++++++++++++ Das kann massive Fehldarstellungen ihrer Auktion zur Folge haben! +++++++++++++++++++ -->
<!-- +++++++++++++++++++++++++ ++++++++++++++++++++++++++ Ihr Supreme Team +++++++++++++++++++++++++++++++++++++++++ -->
于 2008-12-05T13:11:22.353 に答える
1

CSVファイルは少し混乱しています。フィールドはタブで区切られ、何も囲まれていないようです。これは単純なデータでは問題ないかもしれませんが、HTMLを挿入し始めると、問題が発生します。他の質問の1つを見ると、CSVパーサーが混乱し、HTMLの1つのフィールドが複数に分割されているように見えます。タブに遭遇するたびに発生します(おそらく二重引用符もありますか?)

CSVファイルの形式を変更できますか?フィールドを区切るにはコンマを使用し、HTMLなどのより複雑な文字列には囲み文字(二重引用符など)を定義することをお勧めします-文字列内の二重引用符もすべてであるようにする必要があると思います逃げた。また、解析対象によっては、これらの文字列内から改行を削除またはエスケープする必要がある場合があることにも注意してください。ただし、これについては完全にはわかりません。

コメント後に編集する

文字で囲まれている限り、区切り文字を含む文字列について心配する必要はありません。3つのフィールドを含む行が必要で、3つの文字列値が次の場合。

String1
String2
Stri,ng3

以下無効であり、パーサーによって4つのフィールドとして表示されます。

String1,String2,Stri,ng3

区切り文字が二重引用符で「囲まれている」ため、以下は有効です。

"String1", "String2", "Stri,ng3"

文字列内に二重引用符を入れたい場合は、さらに注意が必要です。これは、エスケープする必要があります。あなたが表現したい場合

String1
String"2

CSVフィールドは次のようにエスケープできます

"String1", "String\"2"

LOAD DATA?を使用してMySQLにインポートしていたことを正しく覚えている場合は、上記の例では、次のようなオプションを使用することをお勧めします。

FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\'

MySQLが囲まれた文字列内の改行をどのように処理するかはわかりませんが、これについてはあまりわかりません。ファイルを1行ずつ読み取る場合は、問題が発生する可能性があります。

編集2

残りの問題が改行に関連している場合は、各フィールドをCSVにエクスポートするコードで\nwith\\nおよび\rwithの文字列置換を行うことができます\\r

于 2008-12-05T13:39:20.410 に答える