2016-11-28 79 views
-1

這是我的代碼:嘗試插入JSON字符串WPDB與

$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,如$output = 1,它的工作原理是完美的。但不是用json字符串。

有沒有把json字符串插入數據庫與wordpress的技巧?

回答

-1

我發現了這個問題。

我的數據庫中的字段只有一個varchar(255)。

這對我的json字符串來說還不夠。

0

你需要逃避JSON或序列化的字符串,而插入JSON字符串從像下面的WordPress數據庫..

$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 
    ) 
); 
+0

感謝您的回答。但它不起作用。 – cgee

0

你應該使用mysql_real_escape_string功能將它們存儲到數據庫之前轉義字符。

$output = mysql_real_escape_string($output); 
+0

感謝您的回答。但它不起作用。 – cgee

+0

您可以在腳本的頂部添加以下幾行來查看實際錯誤:error_reporting(E_ALL);函數ini_set( '的display_errors',1); – Techroshni

+0

我發現了這個問題。 我的數據庫中的字段只有一個varchar(255)。 – cgee