我使用的主要代码是
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中的行,如链接上的图片所示

这里所有未定义的变量都是在此段落之前定义的。
我真正想要的用户id必须在不同的行中不同。在这个循环中发生的唯一一件事是,数组中的每个uid一个接一个地写入所有行,最后只有最后一个uid存在,它在图中是3,但我只希望每个uid应该单独出现,即不同的uid代表diff。meta_id。请帮帮忙
关于代码,$result1从定义的mysql函数中获取一个userid数组,而rest变量是用户定义的。我对php和编程有点陌生,所以请帮助我。
发布于 2012-12-27 02:53:03
好了,现在我理解了您的问题(您说“所有行”都在更新,这让我很困惑,您的意思是使用这个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更新每一行。
发布于 2012-12-26 04:54:00
question不是很清楚,它与WordPress相关,而且您没有在问题中添加WordPress标签。无论如何,WordPress有它自己的函数来处理后期元数据。在您的循环中,您正在尝试手动更新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。
发布于 2012-12-26 05:14:37
您的代码将解决此$row["user_id"]问题
user_id,或者在您的问题中发布它,以了解为什么它只出现3.user_id创建一列来插入数据,因为sql注入是一个警告变量,因此必须使用sql进行转义https://stackoverflow.com/questions/14033682
复制相似问题