我们有一个使用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;