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

时间:2013-04-15 18:11:22

标签: php mysql wordpress wpdb

我们使用Wordpress函数$ wpdb-> get_results(SQL)进行了令人讨厌的数据库调用。

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

所以任何人都可以告诉我如何:

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

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

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

1)从$ nastyData

中删除特定行

2)更改$ nastyData中特定行中特定列的值,例如$ nastyData->特定行的名称。

有什么想法吗?

我已经考虑过make_getults()将数据作为数组返回,但是这会在代码中的其他地方产生问题(代码期望接收对象)。

谢谢, MADS

1 个答案:

答案 0 :(得分:2)

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

如果您坚持尝试修改对象,这是一种解决方法。根据{{​​3}},当返回对象时,它们以两种方式之一返回:

  

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

     

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]);
   }
}