[英]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 中的行,如鏈接上的圖片所示此處未定義的所有變量都在此 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"]
如果此變量來自其他查詢,那么您必須查看此查詢如何獲取此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.