2017-02-25 6 views
1

テーブルにJsonデータ型の列があります。このように、このコラムI、レコードの携帯電話データで :MySqlでJsonデータ型を更新するには?

{"0": "044-33565388", "1": "044-33565399", "2": "044-33565311"}

このフォームのようなデータを格納するためには、私がtextareaを使用して、新しい行にそれぞれの電話番号を入力します。次に、次のようなデータを解析するPHPドキュメントにデータを渡します。

$phoneList = json_encode(explode("\r\n", $input), JSON_FORCE_OBJECT) 

そして、mysqlにデータを挿入します。今度は、JSONのデータを更新または削除します。私はこのような何かをしようとしたがエラーを得た:

問合せ:

​​

がエラー:

あなたのSQL構文でエラーが発生しています。 "33565388"、 "1": "33565399"、 "2": "33565311"})どこのseller_id = 8 'の行で使用する正しい構文については、MySQLサーバのバージョンに対応するマニュアルをチェックしてください。 1

MySQLバージョン:5.7.9今

、私はこの問題を解決するために何ができますか?

+0

' ""'それはここにタイプミスである ' "33565399""} ' ? – C2486

答えて

1

まずあなたがだからあなたのクエリがされる値

JSON_SET(`seller_phone`, "$.0", "33565388", "$.1", "33565399") 

を設定するには

JSON_SET(column_name, path, val[, path, val]...)

JSON_SETのフォーマットを理解する必要があります。私は解決策を見つけた

UPDATE `sellers` 
SET `seller_phone` = JSON_SET(`seller_phone`, "$.0", "33565388", "$.1", "33565399") 
WHERE `seller_id` = 8 
+0

ありがとう、レコードが更新されましたが、別の問題があります。レコードの最後の更新は '{" 0 ":" 33565388 "、" 1 ":" 33565399 "、" 2 ":" 044-33565311 "}'です。オブジェクト2を削除したいのですが、どうすればいいですか? –

+1

JSON_REMOVEを使用する方法を確認する必要があります – Naincy

+0

@Naicyは私に明確な情報源を与えることができますか? –

0

  1. $クエリ:'UPDATE sellers SET seller_phone = "[]" WHERE seller_id = '.$seller_id;
  2. $クエリ:'UPDATE sellers SET seller_phone = JSON_SET(seller_phone, '.$seller_phones.') WHERE seller_id = '.$seller_id;

注:

function explode_lines($seller_phones_input) { 
    return explode("\r\n", $seller_phones_input); 
} 

function array_to_query($seller_phones) { 

    $query = null; 

    for ($i = 0; $i < count($seller_phones); $i++){ 

     if ($i!=0){ 
      $query .= ", "; 
     } 

     $query .= '"$['.$i.']", "' . $seller_phones[$i] . '"'; 
    } 

    return $query; 
} 
関連する問題