• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

JSON String in Datenbank speichern

derises

Mitglied
Hallo,

stecke gerade etwas fest sozusagen... Ich bekomme es einfach nicht hin einen JSON String in eine Datenbank zu schreiben.

Das Array bzw der String sieht so aus:
Array ( [form_id] => [form_structure] => [{"cssClass":"input_text","required":"false","values":"First Name"},{"cssClass":"input_text","required":"false","values":"Last Name"},{"cssClass":"textarea","required":"false","values":"Bio"},{"cssClass":"checkbox","required":"false","title":"What's on your pizza?","values":{"2":{"value":"Extra Cheese","baseline":"false"},"3":{"value":"Pepperoni","baseline":"false"},"4":{"value":"Beef","baseline":"false"}}}] )

Mein Ansatz war json_decode und dann foreach.

Nur wie bekomme ich den String dann in die Datenbank sodass ich Ihn beim auslesen wieder zu JSON konvertieren kann?

Grüße & großes Danke bin wirklich ratlos...
 
Werbung:
Hallo,

stecke gerade etwas fest sozusagen... Ich bekomme es einfach nicht hin einen JSON String in eine Datenbank zu schreiben.

Das Array bzw der String sieht so aus:
Array ( [form_id] => [form_structure] => [{"cssClass":"input_text","required":"false","values":"First Name"},{"cssClass":"input_text","required":"false","values":"Last Name"},{"cssClass":"textarea","required":"false","values":"Bio"},{"cssClass":"checkbox","required":"false","title":"What's on your pizza?","values":{"2":{"value":"Extra Cheese","baseline":"false"},"3":{"value":"Pepperoni","baseline":"false"},"4":{"value":"Beef","baseline":"false"}}}] )

Mein Ansatz war json_decode und dann foreach.

Nur wie bekomme ich den String dann in die Datenbank sodass ich Ihn beim auslesen wieder zu JSON konvertieren kann?

Grüße & großes Danke bin wirklich ratlos...

Code:
Array -> json_encode() -> String
String -> json_decode() -> Array

Strings kannst du in eine Datenbank schreiben und auch auslesen:

Code:
Array -> json_encode() -> String -> DB
DB -> String -> json_decode() -> Array

Solltest du das nicht verstanden, keine Lust selbst nachzudenken oder eine weitere Frage haben - vergiss nicht deinen PHP und MySQL Code herzuzeigen.
 
Hey und Sorry für die wenigen Infos:

Es geht um ein Formular in dem man die Elemente selbst anreihen kann und auch befüllen.
Das ganze basiert auf JS und daher stammen auch die Daten.

Hier die Daten die ich erhalte:

Code:
Array
(
    [form_id] =>
    [form_structure] => [{"cssClass":"input_text","required":"false","values":"First Name"},{"cssClass":"input_text","required":"false","values":"Last Name"},{"cssClass":"textarea","required":"false","values":"Bio"},{"cssClass":"checkbox","required":"false","title":"What's on your pizza?","values":{"2":{"value":"Extra Cheese","baseline":"false"},"3":{"value":"Pepperoni","baseline":"false"},"4":{"value":"Beef","baseline":"false"}}}]
)
nullende"["endeEntered data successfully

In meiner Datei die nach dem speichern des Formulares aufgerufen wird habe ich folgendes stehen:
PHP:
foreach ($for_db as $datas) {
    $structure = $datas['form_structure'];
    $structure = json_encode($structure);
    echo "Anfang-".$structure."-Ende<br />";
}

In der Konsole erhalte ich folgende Ausgabe:
Code:
Anfang-null-Ende<br />Anfang-"["-Ende<br />

Danke für deine Hilfe.
 
Werbung:
Bin nun etwas weiter gekommen:



Code:
PHP:
foreach ($for_db as $datas) {
    $datas = json_encode($datas);
    //echo "Anfang-".$datas."-Ende<br />";
}

echo $datas;
$uid = "1";

$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = '######';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
$sql = 'INSERT INTO form_datas '.
       '(id, uid, data) '.
       'VALUES ( "", "'.$uid.'", "'.$datas.'")';

mysql_select_db('test');
$retval = mysql_query( $sql, $conn );

echo $dates = :
"[{\"cssClass\":\"input_text\",\"required\":\"false\",\"values\":\"First Name\"},{\"cssClass\":\"input_text\",\"required\":\"false\",\"values\":\"Last Name\"},{\"cssClass\":\"textarea\",\"required\":\"false\",\"values\":\"Bio\"},{\"cssClass\":\"checkbox\",\"required\":\"false\",\"title\":\"What's on your pizza?\",\"values\":{\"2\":{\"value\":\"Extra Cheese\",\"baseline\":\"false\"},\"3\":{\"value\":\"Pepperoni\",\"baseline\":\"false\"},\"4\":{\"value\":\"Beef\",\"baseline\":\"false\"}}}]"

Fehler in der Konsole:

Could not enter data: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[{\"cssClass\":\"input_text\",\"required\":\"false\",\"values\":\"First Name\"},' at line 1

Jemand einen Tipp?
Danke
 
Moin
warum das:
PHP:
foreach ($for_db as $datas) {
    $datas = json_encode($datas);
    //echo "Anfang-".$datas."-Ende<br />";
}
?

Weiter oben schreibst du nämlich:

Hier die Daten die ich erhalte:

Code:
Array
(
    [form_id] =>
    [form_structure] => [{"cssClass":"input_text","required":"false","values":"First Name"},{"cssClass":"input_text","required":"false","values":"Last Name"},{"cssClass":"textarea","required":"false","values":"Bio"},{"cssClass":"checkbox","required":"false","title":"What's on your pizza?","values":{"2":{"value":"Extra Cheese","baseline":"false"},"3":{"value":"Pepperoni","baseline":"false"},"4":{"value":"Beef","baseline":"false"}}}]
)
nullende"["endeEntered data successfully

Das heißt, form_structure ist doch schon ein JSON String.

Entweder du schreibst das so in die DB oder die serialisierst die Daten vorher. (serialize(), unserialize())

MfG
 
Werbung:
Zurück
Oben