1

次のクエリを使用して、2 つのテーブルを結合しています。テーブル gz_topics には、ページのタイトルやサブタイトルなどの基本的な情報が含まれ、各ページの記事はテーブル gz_articles_topics_intro に格納されます。GZ.URL は実際には各ページの URL に一致する変数ですが、ここでは例として「Birds」を使用しています。

$Zext = mysql_fetch_assoc(mysql_query("SELECT GZ.N, GZ.URL, GZ.Title, GZ.Live,
AI.URL, AI.Article, AI.Pagedex
FROM gz_topics GZ
LEFT JOIN gz_articles_topics_intro AI ON AI.URL = GZ.URL
WHERE GZ.URL LIKE 'Birds' AND GZ.Live = 1"));

それは正常に動作します。問題は、記事を 3 つの別々のテーブルに入れ、それらを結合しようとしたときに始まります...

$Zext = mysql_fetch_assoc(mysql_query("SELECT GZ.N, GZ.URL, GZ.Title, GZ.Live,
Art.URL, Art.Article, Art.Pagedex,
AI.URL, AI.Article, AI.Pagedex, AN.URL, AN.Article, AN.Pagedex
FROM gz_topics GZ
LEFT JOIN gz_articles_topics Art ON Art.URL = GZ.URL
LEFT JOIN gz_articles_topics_intro AI ON AI.URL = GZ.URL
LEFT JOIN gz_articles_topics_names AN ON AN.URL = GZ.URL
WHERE GZ.URL LIKE '$MyURL' AND GZ.Live = 1"));

これを SQL に貼り付けると、問題なく機能し、記事を含むすべてのデータが表示されます。しかし、私のページには値が表示されません。

これは、記事を表示するために使用するコードです。

$Article = $Zext['Article'];
echo $Article;

内部結合と外部結合、while ループなどを試しましたが、何もうまくいかないようです。私の PHP/MySQL スキルは中級で、問題が何であるかわかりません。前述のように、SQL に貼り付けると問題なく動作し、エラー メッセージも表示されないからです。

これは非常に単純に見えるので、問題は私の目の前にあるに違いありません。;)

ヒントをありがとう。

編集時: 1 つの間違いを修正したところ、ページ タイトルなど、テーブル gz_topics の項目がクエリに表示されるようになりました。ただし、それでも記事は表示されません。

4

1 に答える 1

0

問題1)「記事」という同じ名前の列が3つあります

Art.Article, AI.Article, AN.Article

次のように名前を変更できます。

Art.Article AS Article1, AI.Article AS Article2, AN.Article AS Article3

そして、適切な列 (1、2、または 3) を使用できます。

$Article = $Zext['Article1'];

問題 2 ) コンテンツがプレーン テキスト (HTML ではない) の場合、出力をエスケープする必要があります。

echo htmlentities($Article);

于 2013-06-10T03:30:18.243 に答える