Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Json_encode चलाते समय एक ही चर के अंदर एक से अधिक पंक्ति (mysql) परिणाम कैसे लाएं?

अगर मैं आपको सही ढंग से समझ पाया, तो तालिका tPCN प्रत्येक पीसीआर नंबर से जुड़ी कई पंक्तियाँ हो सकती हैं। और आप इन सभी पंक्तियों को लाना चाहते हैं और उन्हें अपने JSON में वापस करना चाहते हैं।

यदि आप इसे हासिल करना चाहते हैं, लेकिन यह भी सुनिश्चित करें कि अन्य दो टेबल केवल एक पंक्ति लौटाएं, तो मुझे लगता है कि आपको जॉइन को tPCN से हटा देना चाहिए अपनी पहली क्वेरी में, और फिर tPCN . लाने के लिए दूसरी क्वेरी बनाएं विशेष रूप से पंक्तियाँ।

$output = [];
$stmt = $dbConnected->prepare("SELECT * FROM change_management.tPCR INNER JOIN change_management.tcomplement ON change_management.tPCR.PCRNo = change_management.tcomplement.PCRNo WHERE tPCR.PCRNo = ?");
$stmt->bind_param('s', $_POST['pcr_number']);
$stmt->execute();
$result = $stmt->get_result();

//select a single row from the result and assign it as the output variable
if ($row = $result->fetch_assoc()) {
    $output = $row;
}

$stmt2 = $dbConnected->prepare("SELECT * FROM change_management.tPCN WHERE PCRNo = ?");
$stmt2->bind_param('s', $_POST['pcr_number']);
$stmt2->execute();
$result2 = $stmt2->get_result();
$output["tPCN"] = array(); //create a new property to put the tPCN rows in

//loop through all the tPCN rows and append them to the output
while ($row2 = $result2->fetch_assoc()) {
    $output["tPCN"][] = $row2;
}

echo json_encode($output);

यह इस प्रकार की संरचना के साथ कुछ JSON उत्पन्न करेगा:

{
  "PCRNo": "ABC",
  "CreationDate": "2019-08-07",
  "Name": "A N Other",
  //...and all your other properties, until the new one:
  "tPCN": [
    {
      "SomeProperty": "SomeValue",
      "SomeOtherProperty": "SomeOtherValue",
    },
    {
      "SomeProperty": "SomeSecondValue",
      "SomeOtherProperty": "SomeOtherSecondValue",
    }
  ]
}

फिर आपको नई संरचना से निपटने में सक्षम होने के लिए अपने जावास्क्रिप्ट कोड में संशोधन करने की आवश्यकता होगी। चूँकि मैं नहीं जानता कि कौन-से क्षेत्र tPCN . से आते हैं तालिका, मैं आपको इसके लिए एक उदाहरण नहीं दे सकता, लेकिन उम्मीद है कि यह स्पष्ट है कि आपको सरणी के माध्यम से लूप करना होगा और आपको मिलने वाली प्रत्येक प्रविष्टि के लिए समान HTML आउटपुट करना होगा।

एन.बी. जैसा कि आप देख सकते हैं कि मैंने तैयार किए गए कथनों और पैरामीटरयुक्त प्रश्नों का उपयोग करने के लिए क्वेरी कोड को फिर से लिखा है, ताकि आप देख सकें कि भविष्य में सुरक्षित तरीके से अपना कोड कैसे लिखना है।

पी.एस. अलग-अलग फ़ील्ड के मान सेट करने के लिए आपके पास "सफलता" फ़ंक्शन में बहुत सारे कोड हैं। आप इसे कम वर्बोज़ और बोझिल बनाने के लिए एक साधारण JS टेम्प्लेटिंग इंजन का उपयोग करने पर विचार कर सकते हैं, और HTML को सही जगह पर स्वचालित रूप से जोड़े गए मानों के साथ उत्पन्न कर सकते हैं। लेकिन यह एक अलग मुद्दा है, केवल आपके कोड के रख-रखाव के लिए



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. इस अद्यतन क्वेरी में क्या गलत है?

  2. MySQL तालिका से मान खींचकर एक नया चर बनाया गया

  3. MySQL का उपयोग करके प्रत्येक समूह में कुल चल रहा है

  4. Oracle से mysql में डेटा आयात करें

  5. गिनती संसाधन आईडी #11 . के साथ मैसकल क्वेरी