这是我的代码:
$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字符串插入数据库是否有技巧?
答案 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字符串来说还不够。