簡體   English   中英

需要有關 PHP 循環中使用的特定 MySQL 查詢的幫助

[英]Need help for a specific MySQL query used in a PHP loop

我使用的主要代碼是

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。 元標識。 請幫忙

關於代碼 $result1 從定義的 mysql 函數中獲取一組用戶 ID,其余變量是用戶定義的。 我對 php 和編程有點陌生,所以請幫忙

question不是很清楚,它與WordPress相關,並且您沒有在問題中添加WordPress標簽。 無論如何, WordPress有它自己的功能來處理 post meta。 在您的循環中,您嘗試手動更新 post meta,但可以使用 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。

你的代碼是解決這個$row["user_id"]

  • 如果是同一用戶發布,則結果為真 3
  • 如果此變量來自其他查詢,那么您必須查看此查詢如何獲取此user_id或將其發布在您的問題中,以了解為什么它只有 3 個。

  • 最好為user_id制作一列以專門為該用戶插入數據。

  • $row["user_id"]是 sql 注入的警告變量,因此必須通過mysql_real_escape_string()對其進行轉義

好的,現在我了解您的問題(您說“所有行”都在更新,這讓我很困惑,您只是指具有此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 ,並使用來自$result11的不同user_id更新每一行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM