尝试使用wpdb插入json字符串

时间:2016-11-28 10:33:03

标签: php json wordpress insert

这是我的代码:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://api.openweathermap.org/data/2.5/weather?q=".$location.",de&lang=de&APPID=abc");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch); //JSON string
curl_close($ch);

//json_decode($output);
//serialize($output);

$table_name = $wpdb->prefix . 'dmd_weather';
$wpdb->insert(
    $table_name,
    array(
        'time' => current_time( 'mysql' ),
        'type' => 'wetter',
        'key' => $location, //<- normal string
        'value' => $output //<- json string
    )
);

我无法使用上面的查询插入数据。

如果我像$output那样更改var $output = 1,那就完美了。但不是用json字符串。

使用wordpress将json字符串插入数据库是否有技巧?

3 个答案:

答案 0 :(得分:0)

你需要转义json或序列化字符串,同时从wordpress插入json字符串到数据库中,如下所示..

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://api.openweathermap.org/data/2.5/weather?q=".$location.",de&lang=de&APPID=abc");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch); //JSON string
curl_close($ch);

//json_decode($output);
//serialize($output);

$final_output = mysql_real_escape_string($output); //<- final escaped string

$table_name = $wpdb->prefix . 'dmd_weather';
$wpdb->insert(
    $table_name,
    array(
        'time' => current_time( 'mysql' ),
        'type' => 'wetter',
        'key' => $location, //<- normal string
        'value' => $final_output //<- json string
    )
);

答案 1 :(得分:0)

在将字符存储到数据库之前,应使用mysql_real_escape_string函数来转义字符。

$output = mysql_real_escape_string($output); 

答案 2 :(得分:-1)

我发现了问题。

我的数据库中的字段只是一个varchar(255)。

这对我的json字符串来说还不够。