编辑$wpdb->get_results(SQL)返回的对象


Editing the object returned by $wpdb->get_results(SQL)

我们有一个使用Wordpress函数$wpdb->get_results(SQL)的讨厌的数据库调用。

在PHP中接收到结果后,我们需要对结果进行一些更改。

有谁能告诉我该怎么做吗?

1)从get_results()返回的对象中删除特定的行。

2)修改返回对象中特定行的特定列的值。

。如果返回的对象是$nastyData,我们需要:

1)从$nastyData中删除特定行

2)更改$nastyData中特定行的特定列的值,例如$nastyData->name为特定行的

任何想法?

我想过让get_results()作为数组返回数据,但这会在代码的其他地方(代码期望接收对象的地方)产生问题。

谢谢,马德斯

首先,您的"讨厌的数据库调用"应该优化为不那么讨厌。更具体地说,只查询您想要的结果,这样您就不必在事后删除内容。这是最好的解决方案。

如果您坚持要修改对象,这是一个变通方法。根据文档,当返回对象时,它们以以下两种方式之一返回:

OBJECT - result将作为行对象的数字索引数组输出。

OBJECT_K -结果将作为行对象的关联数组输出,使用第一列的值作为键(重复的将被丢弃)。

因此,知道结果是一个对象数组,我们可以使用foreach构造获得每个单独的实例:

$results = $wpdb->get_results( $nastySQL );
foreach($results as $index => $result)
{
   // Change name column to FirstName using copy and delete
   $tmp = $result->name;
   unset($result->name);
   $result->FirstName = $tmp;
   // Remove specific row
   if( $result->name == "Tom")
   {
      unset($results[$index]);
   }
}

下面的代码将替换来自数据库表特定字段的值,如果名称字段有Reo这样的值,并且您想将其替换为其他名称,例如John,那么您可以通过下面的代码

$results = $wpdb->get_results( $nastySQL );
foreach($results as $key => $value){
     $results[$key]->name= 'John';            
 }
return $results;