sql >> Databáze >  >> RDS >> Mysql

php jak ukládat a číst data json přes mysql?

Technicky jdeš s tím špatným směrem. MySQL se používá k samostatnému uložení každého vašeho ID/HODNOTY. Abychom NEMĚNILI váš kód, nejprve se podíváme na vaše řešení, ale pak vám vysvětlím „lepší“ způsob, jak to udělat.

Nejprve musíte vytvořit svůj JSON jako proměnnou, nikoli jako součást vašeho SQL:

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

místo

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

Tato první část vám umožní alespoň místo toho správně data do mysql. Předpokládám, že vaše tabulka má ID a že ji budete používat k aktualizaci nebo mazání

Při načítání dat můžete json_decode $row['data'] získat zpět svá data z řádku a pracovat s nimi. Chcete-li jej aktualizovat, postupujte takto:

mysql_query("UPDATE text SET data = "'.mysql_real_escape_string(json_encode($myJsonToBeData)).'" WHERE rowid = '.$myrowid)

Nyní, SPRÁVNÝ způsob, jak to udělat:

Správným způsobem, jak to udělat, by bylo mít v tabulce tato pole:ID, JSONID, JSONVALUE a místo toho použít tento SQL:

SELECT * FROM text WHERE id = $rowid
INSERT INTO text VALUES(NULL, $jsonid, $jsonvalue)
UPDATE text SET jsonid = $jsonid, jsondata = $jsondata

To je docela základní, ale umožní vám to mít ve vaší databázi libovolný počet záznamů, které umožňují vyhledávat, indexovat, třídit, dotazovat atd...



  1. Jak vytvořím fond připojení MySQL při práci s NodeJS a Express?

  2. Jak vrátit pouze datum z datového typu SQL Server DateTime

  3. Jak ladit postgresql uložené procedury?

  4. Kde Android ukládá verzi databáze SQLite?