wpdb

2016-11-28 17 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 
    ) 
); 

私は上記の私のクエリを使用してデータを挿入することはできません。

のようにvar $outputを変更すると、完璧に機能します。しかし、json文字列ではありません。

jsonの文字列をwordpressでデータベースに挿入する方法はありますか?

答えて

-1

この問題が見つかりました。

私のデータベースのフィールドは、varchar(255)のみでした。

私のjson文字列では不十分です。

0

あなたは、あなたがそれらをデータベースに格納する前に文字をエスケープするmysql_real_escape_string機能を使用する必要があります

$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

...以下のようなワードプレスのデータベースに挿入されたJSON文字列中にJSONやシリアライズされた文字列をエスケープする必要があります。

$output = mysql_real_escape_string($output); 
+0

あなたの答えをありがとう。しかし、それは動作しません。 – cgee

+0

実際のエラーを確認するには、スクリプトの先頭に次の行を追加してください:error_reporting(E_ALL); ini_set( 'display_errors'、1); – Techroshni

+0

問題が見つかりました。 私のデータベースのフィールドは、varchar(255)のみでした。 – cgee

関連する問題