数组到字符串错误

时间:2018-04-13 09:35:34

标签: php mysql sql pdo

我无法显示.$app->reactieDoor($topic['id']);它会显示错误,我不知道为什么会这样做!请帮我。

Ps我是新手,所以如果我遗漏了代码中的内容,请告诉我。

与错误对齐:

 echo ' laatste reactie: ' .$app->tijd_reactie($topic['id']) . ' door ' .$app->reactieDoor($topic['id']);

错误仅在我尝试使用此部分时显示:

.$app->reactieDoor($topic['id']);

功能代码:

function reactieDoor($topicid) {
        $this->database->query("SELECT klanten.voornaam, klanten.achternaam FROM reacties 
        LEFT JOIN klanten ON klanten.id=reacties.klant_id
        WHERE reacties.topic_id=:topic_id ORDER BY create_time DESC LIMIT 1"); 

        $this->database->bind(":topic_id", $topicid);    
        $reactie = $this->database->single();

        return $reactie;

    }

我得错误

2 个答案:

答案 0 :(得分:0)

 .$app->reactieDoor($topic['id']);

该代码行为您提供数组而不是一个结果。 尝试var_dump结果。

 var_dump( $app->reactieDoor($topic['id']) );

你会看到它是数组

答案 1 :(得分:0)

我猜测$this->database->single();会返回一个数组(包含forename和surname),所以当你return $reactie;来自该函数时,那是你正在尝试的数组插入字符串...因此错误。

由于该数组应包含forename和surname,请先尝试将其分配给$name变量,然后再使用该变量。

类似的东西:

$name = "Mysterious Stranger";
if($n = $app->reactieDoor($topic['id'])) {
    $name = "{$n['voornaam']} {$n['achternaam']}";
}

echo " laatste reactie: "
    . $app->tijd_reactie($topic['id'])
    . " door {$name}";

在函数中执行此操作可能会更好, if 该函数始终应返回包含名称的字符串。

在这种情况下,您可以将功能改为:

function reactieDoor($topicid) {
    $this->database->query("SELECT klanten.voornaam, klanten.achternaam FROM reacties 
        LEFT JOIN klanten ON klanten.id=reacties.klant_id
        WHERE reacties.topic_id=:topic_id ORDER BY create_time DESC LIMIT 1"); 

    $this->database->bind(":topic_id", $topicid);    
    $reactie = $this->database->single();

    return $reactie ? 
        "{$reactie['voornaam']} {$reactie['achternaam']}" :
        "Mysterious Stranger";
}