1

私が使用するメインコードは

while ($row = mysql_fetch_assoc($result1)) {
    echo $row["user_id"];
    $new    = "[grade uid=\"{$row["user_id"]}\" value=\"{$groupgrade}\" format=\"{$groupformat}\" prv_comment=\"{$groupprivatecomment}\" pub_comment=\"{$grouppubliccomment}\"] ";
    $sqq    = "UPDATE wp_postmeta SET meta_value='$new' WHERE meta_key='grade' AND post_id= $post_id ";
    $result = mysql_query($sqq);
    echo "grade has been updated";
}

リンクの図に示されているように、テーブル wp_postmeta の行に影響しますhttp://i.stack.imgur.com/gkUiz.jpg。ここで定義されていないすべての変数は、この para の前に定義されています。

私が実際に望んでいるのは、ユーザーIDが異なる行で異なる必要があるということです。このループで発生する唯一のことは、配列の各 uid がすべての行に次々に書き込まれ、最後の uid のみが最終的に存続することです。これは図では 3 ですが、各 uid が個別に来ることだけが必要です。差分の uid。メタ ID 。助けてください

コードについて $result1 は、定義された mysql 関数からユーザー ID の配列をフェッチし、残りの変数はユーザー定義です。私はPHPとプログラミングにちょっと慣れていないので、助けてください

4

3 に答える 3

2

questionあまり明確ではなく、関連しており、質問にタグをWordPress追加していません。WordPressとにかく、WordPress投稿メタを処理する独自の機能があります。あなたのループでは、投稿メタを手動で更新しようとしていますが、WordPress のupdate_post_meta関数を使用してそれを行うことができます。構文は以下のとおりです

<?php update_post_meta($post_id, $meta_key, $meta_value, $prev_value); ?>

この場合、次のコードを使用できます

<?php update_post_meta($post_id, 'grade', $new); ?>

ここ$post_idに、更新する投稿 ID が表示されます。

于 2012-12-25T20:53:59.687 に答える
0

あなたのコードはこれを回避することです$row["user_id"]

  • 投稿したのと同じユーザーの場合、結果はtrueになります3
  • この変数が他のクエリからのものである場合、uはこのクエリを調べて、これを取得する方法user_idを確認するか、質問に公開して、なぜ3つしかないのかを確認する必要があります。

  • user_idそのユーザー専用のデータを挿入するための列を作成することをお勧めします。

  • $row["user_id"]SQLインジェクションへの警告変数をビーイングしているので、それはによってエスケープする必要がありますmysql_real_escape_string()
于 2012-12-25T21:14:36.697 に答える
0

OK、あなたの問題を理解したので(「すべての行」が更新されていると言って混乱しました。これはすべての行を意味するだけですpost_id)、これが答えだと思います:

$sql2 = "SELECT meta_id FROM wp_postmeta where meta_key='grade' AND post_id = $post_id";
$result2 = mysql_query($sql2);

while (($row = mysql_fetch_assoc($result1)) && ($row2 = mysql_fetch_assoc($result2))) {
    echo $row2["meta_id"], ' => ', $row["user_id"];
    $new    = "[grade uid=\"{$row["user_id"]}\" value=\"{$groupgrade}\" format=\"{$groupformat}\" prv_comment=\"{$groupprivatecomment}\" pub_comment=\"{$grouppubliccomment}\"] ";
    $sqq    = "UPDATE wp_postmeta SET meta_value='$new' WHERE meta_key='grade' AND post_id= $post_id AND meta_id = {$row2["meta_id"]}";
    $result = mysql_query($sqq);
    echo " grade has been updated";
}

新しい$sql2クエリはそれぞれmeta_idを取得し、各行を異なるuser_idfromで更新します$result11

于 2012-12-26T18:53:03.107 に答える