तकनीकी रूप से, आप उसके साथ गलत रास्ते पर जा रहे हैं। MySQL का उपयोग आपकी प्रत्येक ID/VALUE को अलग-अलग स्टोर करने के लिए किया जाता है। आपका कोड न बदलने के लिए हम पहले आपके समाधान को देखेंगे लेकिन फिर मैं इसे करने का "बेहतर" तरीका बताऊंगा।
सबसे पहले, आपको अपने JSON को एक वैरिएबल के रूप में बनाना होगा, न कि आपके SQL का हिस्सा:
mysql_query("INSERT INTO text (data) VALUES (".mysql_real_escape_string(array(json_encode('id' => $uid, 'value' => 'yes'))).")");
के बजाय
mysql_query("INSERT INTO text (data) VALUES (json_encode('id' => $uid, 'value' => yes))");
यह पहला भाग आपको कम से कम डेटा को सही ढंग से MySQL में बदलने की अनुमति देगा। मैं मान रहा हूं कि आपकी तालिका में एक आईडी है और आप इसका उपयोग अपडेट या हटाने के लिए करेंगे
जब आप अपना डेटा पुनर्प्राप्त करते हैं, तो आप json_decode
. कर सकते हैं $row['data']
अपने डेटा को पंक्ति से वापस पाने और उसके साथ काम करने के लिए। इसे अपडेट करने के लिए, बस करें:
mysql_query("UPDATE text SET data = "'.mysql_real_escape_string(json_encode($myJsonToBeData)).'" WHERE rowid = '.$myrowid)
अब, ऐसा करने के सही तरीके के लिए:
ऐसा करने का सही तरीका यह होगा कि आप इन फ़ील्ड्स को अपनी तालिका में रखें:ID, JSONID, JSONVALUE और इसके बजाय इस SQL का उपयोग करें:
SELECT * FROM text WHERE id = $rowid
INSERT INTO text VALUES(NULL, $jsonid, $jsonvalue)
UPDATE text SET jsonid = $jsonid, jsondata = $jsondata
यह बहुत ही बुनियादी है, लेकिन यह आपको अपने डेटाबेस में कितनी भी प्रविष्टियाँ रखने की अनुमति देगा जो इसे खोजने योग्य, अनुक्रमित, सॉर्ट करने योग्य, क्वेरी करने योग्य, आदि बनाती हैं...