[英]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.