1

この形式の投稿に関連するデータを格納するテーブルがあります

wp_postmetaを記述します。

+------------+---------------------+------+-----+---------+----------------+
| Field      | Type                | Null | Key | Default | Extra          |
+------------+---------------------+------+-----+---------+----------------+
| meta_id    | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
| post_id    | bigint(20) unsigned | NO   | MUL | 0       |                |
| meta_key   | varchar(255)        | YES  | MUL | NULL    |                |
| meta_value | longtext            | YES  |     | NULL    |                |
+------------+---------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

meta_keyには、のようなキーがあります'author', 'excerpt', 'download'。メタ値には対応する値があります。

今、私はpost_idに基づいてDBを照会するphpスクリプトを書いています。したがって、上記のテーブルのすべてのmeta_dataを指定された順序で表示する必要があります。クエリは次のとおりです。

    $select_post_meta="select meta_value from wp_postmeta where post_id='".$postid."' and (meta_key='author' or meta_key='category' or meta_key = 'excerpt')";

$meta_paper = mysql_query($select_post_meta);

    while(($meta_values = mysql_fetch_array($meta_paper))
            {   echo "<i>'".$meta_values['meta_value']."'</i><br/>";  }

メタ値が私が照会したのと同じ順序で表示されると本当に便利ですが、それらは最初の説明、カテゴリ、および作成者として配置されます。データベースにクエリを実行して、最初の作成者、カテゴリ、説明の順序で値を取得できるようにする方法は他にありますか。ありがとうございました

4

1 に答える 1

2

追加

ORDER BY meta_key

クエリ テキストに。このような:

$select_post_meta="select meta_value from wp_postmeta where post_id='".$postid."'
and (meta_key='author' or meta_key='category' or meta_key = 'excerpt')
ORDER BY meta_key";

SQL テキストに「安全でない」文字列を含めないようにして、SQL インジェクションを阻止することを強くお勧めします。

$select_post_meta = sprintf("select meta_value from wp_postmeta 
where post_id='%s'
and (meta_key='author' or meta_key='category' or meta_key = 'excerpt')
ORDER BY meta_key", mysql_real_escape_string($postid));

たまたま検索語をアルファベット順にリストしただけなので、ORDER BY 式は非常に単純です。

他の順序でそれらが必要な場合は、別の表現を使用できます。

ORDER BY CASE meta_key WHEN 'Author' THEN 1 WHEN 'Category' THEN 2 WHEN 'Excerpt' THEN 3 END

また、クエリが各キーに対して任意の数の値を返す可能性があることにも注意してください ((post_id、meta_key) に一意の制約がないことを前提としています)。

クエリが Author、Category、および Excerpt に対してゼロ、1 つ、または複数の値を返す可能性があり、どれがどれであるかを知る方法がありません。

ここでの私の傾向は、結果セットにも meta_key を含めることです。次に、私のコードは、特定meta_valueの が特定のmeta_key.

于 2012-06-15T19:31:49.363 に答える