Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

php como armazenar e ler dados json via mysql?


Tecnicamente, você está indo no caminho errado com isso. MySQL é usado para armazenar cada um dos seus ID/VALUE separadamente. Para NÃO alterar seu código, veremos sua solução primeiro, mas depois explicarei a maneira "melhor" de fazê-lo.

Primeiro, você precisa fazer seu JSON como uma variável, não como parte do seu SQL:

mysql_query("INSERT INTO text (data) VALUES (".mysql_real_escape_string(array(json_encode('id' => $uid, 'value' => 'yes'))).")");

ao invés de

mysql_query("INSERT INTO text (data) VALUES (json_encode('id' => $uid, 'value' => yes))");

Esta primeira parte permitirá que você pelo menos coloque os dados corretamente no mysql. Presumo que sua tabela tenha um ID e que você a usará para atualizar ou excluir

Ao recuperar seus dados, você pode json_decode o $row['data'] para recuperar seus dados da linha e trabalhar com eles. Para atualizá-lo, basta fazer:
mysql_query("UPDATE text SET data = "'.mysql_real_escape_string(json_encode($myJsonToBeData)).'" WHERE rowid = '.$myrowid)

Agora, para a maneira CERTA de fazer isso:

A maneira correta de fazer isso seria ter esses campos em sua tabela:ID, JSONID, JSONVALUE e usar este SQL:
SELECT * FROM text WHERE id = $rowid
INSERT INTO text VALUES(NULL, $jsonid, $jsonvalue)
UPDATE text SET jsonid = $jsonid, jsondata = $jsondata

Isso é bastante básico, mas permitirá que você tenha qualquer número de entradas em seu banco de dados que o tornem pesquisável, indexado, classificável, consultável, etc ...