2014-03-29 24 views
1

我的代码如下所示:var_dump说:STRING,回声说:注意:数组到字符串的转换。 <? PHP PDO

try { 
    $tagsel = $db->prepare('SELECT tag.name FROM tag LEFT JOIN '.TB_NAME.' ON tag.id = '.TB_NAME.'.tag WHERE '.TB_NAME.'.id =?'); 
    $tagsel->bindParam(1, $id); 
    $tagsel->execute(); 
} catch (Exception $e) { 
    echo "Couldn't update database"; 
    exit; 
} 
$tagsel = $tagsel->fetch(PDO::FETCH_ASSOC); 

var_dump($tagsel); 
echo $tagsel; 

结果是:到底

string(6) "people" 
Notice: Array to string conversion in C:\xampp\htdocs\blastbland\admin\inc\admin- functions.php on line 171 Array 

我只是想知道,这怎么可能?我需要将$ tagsel变量作为一个字符串,以便稍后与其他字符串进行比较,但令人惊讶的是我发现它无法进行比较或回显,但var_dump仍然告诉我这是一个字符串。 如果有人有一个想法,我会很感激。干杯!

+1

'echo $ tagsel ['name'];' – CodeBird

+0

我甚至试过,不幸的是没有效果 – vacuum

+0

没有办法可能会发生这种情况,除非您使用的代码与使用的代码不一样一个你粘贴在这里。 – CodeBird

回答

0

PDO::FETCH_ASSOC - 你在这里要求一个关联数组。如果你只是试图回应结果,PHP必须尝试隐含地将$tagsel转换为一个字符串。您可以改为使用print_r来查看$tagsel的内容。

+0

我想我明白你的意思了。当然,print_r的作品。我唯一的问题是,我不能使用$ tagsel作为数组(如$ tagsel ['define'],甚至不能作为字符串。毕竟,使用默认获取样式解决了问题,所以我可以使用$ tagsel [0]作为一个字符串,但对我来说似乎有点难看。谢谢!:) – vacuum

+0

好的。我失去了它。我认为它是有效的,因为具有默认获取风格的新结果是:string(6)“people”[0] => string(6)“people”。 我只能在var_dump($ tagsel)之后使用echo $ tagsel [0]才能得到结果“people”。如果我只使用回声和退出函数,我什么也得不到。不知道,这似乎很胡说,我会尝试寻找其他代码中的错误。 – vacuum

0

这个问题不是真正的问题。
您正在运行一些其他的代码,很可能是这样的

var_dump($tagsel['name']); 
echo $tagsel; 
你必须更加注重运行,不应该叫别人为你做它的代码

+0

谢谢。我不会问这是否对我来说不会那么奇怪。相信我,我正在关注,我一直坚持这一段时间了。我使用上面的代码,你知道,这是Ctrl + C然后按Ctrl + V – vacuum

+0

是应该是一个有用的答案?似乎更像是向我传道。但是,无论如何,谢谢你的时间,我想。 – vacuum

+0

对于给出的问题 - 当然是。 –

相关问题