-1

ID と親を使用してカテゴリ ツリーを格納するのが一般的です。私の場合、ナレッジベース、articleテーブル内のすべてのレコード(記事)はカテゴリ(フィールド付き)に属しcatidcategoriesテーブル内のすべてのレコードにはツリー構造を保存するIDandがあります。parent

article table
id | catid | date | subject | content

categories table
id | name | parent

問題は、記事をcsvまたはExcelにエクスポートするときです。

id | category | date | subject | content

記事が息子のカテゴリに属しているときと同じように、カテゴリツリー全体を維持する方法、次のようなカテゴリが必要です

grandpa/father/son/, or grandpa : father : son

次に、csv を Excel で開くことができます。メニュー -> データ -> テキストを列に、「:」で区切って、現在のカテゴリだけでなく、ツリー カテゴリ全体を取得します。

作業コードのサンプル:

    $query = 'SELECT `a`.`id` AS `ID`, concat(CASE WHEN ISNULL(`f`.`name`) THEN "" ELSE concat(`f`.`name`,":") END,CASE WHEN ISNULL(`e`.`name`) THEN "" ELSE concat(`e`.`name`,":") END,CASE WHEN ISNULL(`d`.`name`) THEN "" ELSE concat(`d`.`name`,":") END,CASE WHEN ISNULL(`c`.`name`) THEN "" ELSE concat(`c`.`name`,":") END,CASE WHEN ISNULL(`b`.`name`) THEN "" ELSE `b`.`name` END) AS `Category`, `a`.`subject` AS `Subject`,`a`.`content` AS `Content`,`a`.`dt` AS `Date Created`, 

FROM articles as a
LEFT JOIN categories as b ON a.catid = b.id
LEFT JOIN categories as c ON b.parent = c.id
LEFT JOIN categories as d ON c.parent = d.id
LEFT JOIN categories as e ON d.parent = e.id
LEFT JOIN categories as f ON e.parent = f.id

WHERE (DATE(`dt`) BETWEEN \'' . $date_from . '\' AND \'' . $date_to . '\')  order by id asc';

ツリー構造フィールドをエクスポートしたい他の人に役立つことを願っています。

4

3 に答える 3

0
<?php

$conn = mysql_connect("localhost","YOUR DB USER NAME","YOUR DB PASSWORD");
if(!$conn) {
  die('Could not connect: ' . mysql_error());
}

mysql_select_db("YOUR DB NAME", $conn);

$result = mysql_query("YOUR QUERY HERE");

while($row = mysql_fetch_array($result)) {
  echo $row['ID'];
  -----
  -----
}

mysql_close($conn);
于 2013-01-09T09:45:31.963 に答える
0

データベースにクエリを実行した後、結果を解析する必要があります。

$query = 'query code here';

$result = mysql_query($query); 

while( $row = mysql_fetch_array($result) ) {
  // do something with that row
}

また、mysql_x 関数は非推奨です。代わりにPDOまたはmysqliを使用してください。

于 2013-01-09T09:32:13.977 に答える
-1

phpMyAdmin で設計した SQL コードを PHP で実行したいと思いますが、これはうまく機能します。最も一般的な問題は、引用符に関するものです。文字列の引用符については、こちらをご覧ください

ご覧のとおり'、クエリ コードをフレーム化するために使用していますが、クエリ内でも使用しています。これにより、ひどい一連の構文エラーが発生したに違いありません。"変数に設定する際に、クエリ コードをフレーム化するために使用できます。

何も得られない場合は、SQL コマンドが実行された可能性がありますが、結果は空でした。関数でこれをテストできvar_dump()ます。また、すべてのエラー報告がオンになっていることを確認してください。エラー報告についてはこちら

また、関数の代わりにPDO クラスを調べて使用することをお勧めしますmysql。これにより、キャッチしてエラーをエレガントに処理できるハンサムな例外がスローされます。またPDO 、何らかの方法でコードを保護します。

于 2013-01-11T09:33:22.347 に答える