如何处理多个WordPress WPDB查询?

时间:2017-12-25 作者:ShahRukhMlk

在我的代码中,我使用此查询来获取credited field为false的所有行:

$uncredited_incentives_query = $wpdb->prepare(
    "SELECT * FROM $incentives_table WHERE user_id = %s AND credited = FALSE ",
    $sponsor->ID
);
然后我处理结果。然后,对于上一个查询返回的行,我必须将credited字段设置为true。我目前正在使用此aproach。

$wpdb->update(
$incentives_table,
array(
    \'credited\' => true
),
array(
    \'user_id\'  => $sponsor->ID,
    \'credited\' => false
)
);
但我不想包括自执行此代码以来添加的任何新行。所以我想知道这怎么可能?我是否使用了正确的方法?。如果没有,我该怎么做?

提前感谢。

1 个回复
SO网友:Shibi

Method 1 - Check for the last row id.

SELECT * FROM $incentives_table WHERE user_id = %s AND credited = FALSE

可以获取数组中的最后一行并获取列row\\u id。

然后您可以使用where更新

WHERE user_id = %s AND credited = FALSE AND row_id <= {last row id}

Method 2 - temp column.

首先,您需要在表中为它创建另一列,例如“temp\\u user\\u update”。

现在,当您想要获取数据并进行更新时,首先需要创建变量以在代码中使用,并将其保存在此列中。

$temp_user_update = $sponser->ID.time();

UPDATE table set temp_user_update=\'{$temp_user_update}\' WHERE user_id = %s AND credited = FALSE

完成此步骤后,您可以选择并更新WHERE temp_user_update=\'{$temp_user_update}\'

结束

相关推荐

WordPress删除带有字符串的MySQL行

因此,我正在更新一个旧wordpress插件(从未发布)的代码,我希望在导入新数据之前数据库保持“干净”,否则数据只会累积起来,我希望在每次导入之前都保持干净,这样就不会发生重复。这是我正在使用的代码,但似乎不起作用。global $wpdb; $wpdb->delete( $wpdb->postmeta WHERE meta_key LIKE \'_cb_%\' ) ); $wpdb->delete( $wpdb->posts WHERE post_type LI