-1

次のようなテーブルがあるとします。

+---------+------+------+---+-----+---+
| term    | 1    | 2    | 3 | ... | n |
+---------+------+------+---+-----+---+
| connect | 7    | 14   | 2 | ... | 8 |
| finish  | 1    | NULL | 9 | ... | 1 |
| ...     | ...  | ...  | . | ... | . |
| net     | NULL | 6    | 1 | ... | 5 |
+---------+------+------+---+-----+---+

`*ヘッダーはドキュメント名を意味し、以下の値はドキュメント内での用語の出現頻度を意味します

特定の値の行を選択する必要がありtermます。現在私は使用しています:

$result = $mysqli->query("SELECT * FROM `term_doc` WHERE `term`='$term'");

while ($row = $result->fetch_array()){

    $result_[] = $row;

}

上記のスクリプトから、次のようになります。

Array ([0]=>Array([0]=>connect*
                  [term]=>connect*
                  [1]=>7
                  [2]=>14
                  [3]=>3
                  ...
                  [n]=>8)...)

アスタリスクが付いた要素は望ましくありません。きれいな配列を取得するには、次のスクリプトを適用する必要があります

$doc_with_term = $result_[0];

unset($doc_with_term[0]);

unset($doc_with_term['term']);

したがって、次の配列を取得します。

Array([1]=>7
      [2]=>14
      [3]=>3
      ...
      [n]=>8)

最後のスクリプトを使用せずにクエリ結果を取得してクリーンな配列を取得するエレガントな方法があるかどうかを知りたい

4

2 に答える 2

0

配列にフィールド「用語」を含めないようにしますか? それを行う最も簡単な方法:

$result = $mysqli->query("SELECT * FROM FROM `term_doc` WHERE `term`='$term'");

$doc_with_term = $result->fetch_assoc();

unset($doc_with_term['term']);

unset-function を使用したくない場合は、クエリで必要なフィールドを指定する必要があります。たとえば、

$result = $mysqli->query("SELECT `1`,`2`,`3` FROM FROM `term_doc` WHERE `term`='$term'");

$doc_with_term = $result->fetch_assoc();

編集

なぜあなたがこれを望んでいるのか、私にはまだわかりません。結果からフィールドを除外する方法はありません。それらを含めるだけです。

あなたは使用することができます

SHOW CREATE TABLE

フィールドのリストを取得し、後で SELECT で使用することはできますが、unset() を使用すると (!) 簡単になるため、かなりの労力がかかるようです。

于 2013-11-05T11:12:27.207 に答える
0

データベースを適切に設計するだけです。

この行が列として表されるテーブルが必要なようです:

term_id | value
      1 |     7
      1 |    14
      1 |     2
      2 |     1
      2 |     9

等々。

このようにして、単純な通常のクエリでフィールドを作成できます。優れた mysql 抽象化ライブラリを使用すると、たった 1 行のコードになります。

$sql    = "SELECT value FROM terms, term_doc WHERE term=?s AND term_id=id";
$result = $db->getCol($sql, $term);

クエリを安全にするプレースホルダーの使用法に注意してください

于 2013-11-05T11:14:57.780 に答える