Json adatot tartalmazó php stdClass Object mentése adatbázisba
2022-06-07T19:00:58+02:00
2022-06-08T13:28:48+02:00
2022-08-12T09:25:30+02:00
Gabor.Buczko
Sziasztok!

Van egy PHP stdClass objektumom, amiben többek között van html és json tartalom is. Ezt szeretném elmenteni adatbázisba és vissza is nyerni valamilyen módon. Próbálkoztam json_encode -> decode-dal, de benne hagyja a json mezők double qoute-jait, ezért nem értelmezhető a dolog.
Serialize -> unseriallize nem adott jó megoldást a html tartalmak miatt.

Kérlek segítsetek benne, hogy ti hogy oldanátok meg ezt a dolgot.

stdClass Object ( [id] => 20 [categoryid] => 2 [userid] => 482 [bannerkep] => images/kepmappa/19/IMG_2087%20001.jpg [kepek] => [{"url":"/images/kepmappa/19/19-sBB4QmY0PHGvwWx2I69y.jpg","ordering":9999},{"url":"/images/kepmappa/19/19-0b1tUHKUeoOaIrvCK7vy.jpg","ordering":1},{"url":"/images/kepmappa/19/19-0k3H8fQbU34R2yg3XbGv.jpg","ordering":2},{"url":"/images/kepmappa/19/19-jlzszGCgP0WFjgHeIi4A.jpg","ordering":3},{"url":"/images/kepmappa/19/19-wHHl3z0OB3kKBUETf9TA.jpg","ordering":4}] [rovidleiras] => HTML TARTALOM !!!! [hosszuleiras] => HTML TARTALOM !!!! [foglalasbeallitasok] => JSON TARTALOM [kiegszolgaltatasok] => JSON TARTALOM [cimkek] => JSON TARTALOM [reszletek] => JSON TARTALOM [state] => 1 [ordering] => 0 )
Köszönettel:
Buczkó Gábor
Mutasd a teljes hozzászólást!

  • Nem hiszem, hogy ezen meg kellene bármit is oldani. Az objektumból felépítesz egy prepared statement-et:

    $statement = $db->prepare(" INSERT INTO tabla (categoryid, userid, ...) VALUES(:categoryid, :userid, ...) ");
    Majd beállítod a prepared statement paramétereit:

    $statement->setParam(":categoryid", $obj->categoryid); $statement->setParam(":userid", $obj->userid); ... $statement->setParam(":rovidleiras", $obj->rovidleiras); //a $obj->rovidleiras string ... $statement->setParam(":reszletek", $obj->reszletek); //ha a $obj->reszletek JSON-string, különben $statement->setParam(":reszletek", json_encode($obj->reszletek)); //ha PHP objektum
    Majd végrehajtod a statement-et.
    Tehát a lényeg az, hogy ezek az értékek az adatbázisnak stringként menjenek el. Még akkor is, ha mondjuk Postgres DB-t használsz és az az adott mező JSON típusú - SQL nyelvben string-ként kell küldeni abban az esetben is.

    Mondjuk azt azért megkérdőjelezném, hogy biztos jó-e így az a tábla, hogy JSON-öket tárolsz benne - persze ez nem feltétlen az ördögtől való, ha ésszel csinálják.
    Mutasd a teljes hozzászólást!
  • Itt nem az a probléma, hogy egyesével elmentsem az objektum elemeit egy-egy adatbázis mezőbe.
    Az korábban megtörtént (eddig ez teljesen alapvető dolog). Amikor visszaolvasom az egészet, abból kapom az stdClass Object-et.

    A lényeg az lenne, hogy ezt az egészet szeretném egy mezőbe biztonságosan elmenteni, hogy később ellenőrizhető legyen, hogy például egy rendeléshez hozzáadott termék összes adata mi volt a rendelés pillanatában.

    Ahogy látom kicsit összecsaptam a kérdésem. Elnézést!
    Mutasd a teljes hozzászólást!
  • Megoldottam a dolgot... A legegyszerűbb dologra nem gondoltam...

    Első körben az összes JSON tartalmú mezőt vissaz alakítottam json_decode-dal (kepek, foglalasbeallitasok, kiegszolgaltatasok, cimkek, reszletek).
    Másodjára a html tartalmakat megformáztam:

    $text = preg_replace('/[\r\n\t ]+/', ' ', $text) if( 0 === strpos( bin2hex( $text ), 'efbbbf' ) ){ $text = substr( $text, 3 ); } $text = html_entity_decode( $text )
    És az egész végén json_encode-dal készítettem egy JSON-t, amit elmentek a rendelés termek mezőjébe.
    Mutasd a teljes hozzászólást!
  • Pontosan milyen volt a `serialize` kimenete, és mi volt benne a nemjó?
    Mutasd a teljes hozzászólást!
  • Mutasd a teljes hozzászólást!
abcd