繁体   English   中英

编辑 $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 - 结果将作为数字索引的行对象数组输出。

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM