मैं हर 10 मिनट में अपने जेसन सरणी को बचाने के लिए अपने सर्वर पर क्रॉन जॉब करना चाहता हूं (मैं हर 10 मिनट में MySQL टेबल अपडेट करना चाहता हूं)

बात यह है कि मेरे पास वास्तव में नेस्टेड सरणी है जो वर्तमान में आपकी मदद के बिना अकेले बचाना मेरे लिए वास्तव में कठिन है!

यहाँ जेसन सरणी है:

{"firstname":{"eur":14.27,"e":0.00612979},"lastname":{"eur":0.18709,"e":2.655e-05},"middlename":{"eur":617.26,"e":1.0}}

मेरी तालिका में इसके लिए पंक्तियाँ हैं: नाम (जो उदाहरण का नाम है-> प्रथम नाम) इसलिए मैं पंक्ति को अद्यतन करना चाहता हूँ जहाँ तालिका नाम मान मेरे उदाहरण के समान है जो "प्रथम नाम" या "अंतिम नाम" या "मध्य नाम" है।

मेरे पास दो और पंक्तियाँ हैं जिनमें "यूर" और "ई" पंक्तियाँ हैं। मुझे उदाहरण के रूप में जेसन सरणी से उसी पंक्ति पंक्ति में मान इनपुट करना होगा। मुझे पता है कि इसका बुरा समझाया गया है कि मैं क्या चाहता हूं इसलिए मैं बेहतर प्रयास करूंगा।

मेरे एसक्यूएल में मेरे पास लाइनें हैं: (जहां नाम पहले से लिखा है और वही रहना चाहिए) नाम - यूरो - ई

मैं हर 10 मिनट में EUR और E के मानों को अपडेट करना चाहता हूं जहां sql से NAME सरणी डेटा के समान है।

यहां मेरा काम नहीं कर रहा PHP कोड है:

$filename = "JSON-FILE-LINK";
$data = file_get_contents($filename);  
echo $data;

बहुत बहुत धन्यवाद समुदाय!

संपादित करें: मैं शर्त लगाता हूं कि एसक्यूएल कोड इस तरह कुछ होना चाहिए: अद्यतन नाम SET eur = $eur, e = $e, ... जहां नाम = $ firstname.

फर्स्टनाम हर वस्तु का पहला नाम है। और यूरो और ई ही एकमात्र मूल्य है जिसे बदला जाना चाहिए।

जेसन डेटा को एसक्यूएल वैरिएबल में कैसे पॉप्युलेट करें मेरे लिए अब सबसे बड़ी समस्या है।

0
ajmoprobatopet 7 अप्रैल 2020, 01:59

1 उत्तर

सबसे बढ़िया उत्तर

यहाँ एक डेमो है। मैंने MySQL के परीक्षण स्कीमा में एक तालिका बनाई:

mysql> use test;
mysql> create table mytable (name varchar(20), eur numeric(9,2), e numeric(9,2));

मैंने जेएसओएन को json_decode() के साथ एक सहयोगी सरणी में डीकोड करने के लिए कुछ PHP लिखा, और फिर चाबियों का उपयोग करें और मेरे द्वारा बनाई गई MySQL तालिका में सम्मिलित करने के लिए मान।

<?php

$pdo = new PDO('mysql:host=127.0.0.1;dbname=test', 'root', 'xxxx');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$data = '{"firstname":{"eur":14.27,"e":0.00612979},"lastname":{"eur":0.18709,"e":2.655e-05},"middlename":{"eur":617.26,"e":1.0}}';

$sql = "INSERT INTO mytable (name, eur, e) VALUES (?, ?, ?)";
$stmt = $pdo->prepare($sql);

foreach(json_decode($data, true) as $name => $values) {
    $stmt->execute([$name, $values['eur'], $values['e']]);
}

मैंने अपनी बैश कमांड लाइन पर PHP चलाया।

php json-demo.php 

परिणाम दिखाने वाली एक SQL क्वेरी यहां दी गई है:

mysql> select * from mytable;
+------------+--------+------+
| name       | eur    | e    |
+------------+--------+------+
| firstname  |  14.27 | 0.01 |
| lastname   |   0.19 | 0.00 |
| middlename | 617.26 | 1.00 |
+------------+--------+------+

इसके लायक क्या है, आपके द्वारा दिखाया गया JSON उदाहरण JSON सरणी नहीं है, यह एक JSON ऑब्जेक्ट है।

कर्ली ब्रेसिज़ { } के अंदर की/वैल्यू पेयरिंग इसे एक ऑब्जेक्ट बनाते हैं।

वर्गाकार कोष्ठक [ ] के अंदर अल्पविराम से अलग की गई सूचियां हैं।

2
Bill Karwin 7 अप्रैल 2020, 14:27