将PHP变量导入数据库

时间:2013-02-27 21:34:41

标签: php mysql

获取:可捕获的致命错误:类stdClass的对象无法转换为字符串...来自以下代码:

$url = "{$row['url']}";

$embed_info = json_decode($client->get('oembed', array('url' => $url)));
$sql="INSERT INTO persons (iframe) VALUES('$embed_info')";

如何让$ embed_info作为字符串工作并很好地进入我的数据库?

2 个答案:

答案 0 :(得分:0)

看着这个:

$embed_info = json_decode($client->get('oembed', array('url' => $url)));

假设$client->get调用返回JSON(字符串),这可能是您要存储的内容。在该JSON上调用json_decode后,$embed_info就是一个对象(已解码的JSON)。您不能再执行$sql = "...$embed_info...";之类的操作,因为PHP会尝试隐式尝试将 Object 转换为String。

如果您只想存储JSON,请跳过json_decode来电。

答案 1 :(得分:0)

不确定是一种好的做法还是符合您的需求,但您可以序列化对象并使用base64对其进行编码(对于逗号和其他字符)

$embed_info = json_decode($client->get('oembed', array('url' => $url)));
$data = base64_encode(serialize($embed_info));
$sql = "INSERT INTO persons (iframe) VALUES ('{$data}')";

稍后您可以检索该对象:

$sql = "SELECT iframe FROM persons WHERE <the where>";
// ... execute the query and fetch in $row
$embed_info = unserialize(base64_decode($row['iframe']));
// Now in $embed_info you get back the object 
// Note that the object's class must be loaded before do that