জেএসওএন মাইএসকিউএল ফলাফলগুলি এনকোড করেছে


304

আমি কীভাবে json_encode()মাইএসকিউএল ক্যোয়ারী ফলাফলগুলি ব্যবহার করব? আমার কি সারিগুলির মধ্য দিয়ে পুনরাবৃত্তি করতে হবে বা আমি কেবল এটি পুরো ফলাফলের অবজেক্টে প্রয়োগ করতে পারি?


1
আমি জানি এটি খুব পুরানো প্রশ্ন। তবে স্ট্রিং হিসাবে দেখানো পূর্ণসংখ্যার সমস্যা সমাধানের সহজ বিকল্প কেউ দেখায় না। @ মৌকাট্রন json_encode()নীচের উত্তরে JSON_NUMERIC_CHECK এর পতাকা সরবরাহ করে। সহজ এবং এটি একটি কবজ মত কাজ করে! stackoverflow.com/questions/1390983/...
— AlexGM

1
আছে: একটি মানানসই প্রশ্ন + + এ স্ট্রিং টাইপ-সমস্যা বিষয়ে উত্তর stackoverflow.com/questions/28261613/...
— মার্সেল Ennix

উত্তর:


493
$sth = mysqli_query("SELECT ...");
$rows = array();
while($r = mysqli_fetch_assoc($sth)) {
    $rows[] = $r;
}
print json_encode($rows);

এখানে উল্লিখিত হিসাবে ফাংশনটির json_encodeপিএইচপি> = 5.2 এবং পিএইচপি-জেসন প্যাকেজ দরকার

দ্রষ্টব্য : mysqlপিএইচপি 5.5.0 হিসাবে অবহিত করা হয়েছে, mysqliপরিবর্তে এক্সটেনশনটি ব্যবহার করুন http://php.net/manual/en/migration55.deprecated.php ।


69
আমি আপনার হিসাবে পরামর্শ হিসাবে পরামর্শ করতে চাই যে ASজনসাধারণের জন্য কলামগুলির নাম পরিবর্তন করতে যেমন নির্বাচিত ক্যোয়ারির সময় ব্যবহার করার জন্য যেমন SELECT blog_title as titleএটি ক্লিনার এবং জনগণ জানেন না যে ডাটাবেস থেকে সঠিক কলামগুলি কী।
— রবার্টপিট

14
এই কোডটি ভুলভাবে সমস্ত সংখ্যার মানকে স্ট্রিং হিসাবে এনকোড করে। উদাহরণস্বরূপ, স্কোর নামক একটি মাইএসকিউএল সংখ্যাসূচক ক্ষেত্রের 12 এর পরিবর্তে "12" এর JSON মান হবে (উদ্ধৃতিগুলি লক্ষ্য করুন)।
— থিও

24
@ রবার্টপিট, আপনার কলামগুলির নাম গোপনের উপর ভিত্তি করে সুরক্ষাটি অস্পষ্টতার দ্বারা সুরক্ষা !
— টিএমএস 21

4
@ টমাস সত্য, তবে সঠিক কলামের নামগুলি জেনে এসকিউএল ইঞ্জেকশন আক্রমণগুলি যথেষ্ট সহজ করে তোলে
— টিম সেগুইন

16
@ টিম: আপনি যদি এমন পর্যায়ে পৌঁছে যাচ্ছেন যে আপনার কলামের নামগুলি জানা হয়ে গেছে আপনি ইতিমধ্যে হারিয়ে যাওয়া এসকিউএল ইঞ্জেকশনের একমাত্র বাধা, না?
— পাওলো বার্গান্টিনো 15

44

এটি চেষ্টা করুন, এটি আপনার অবজেক্টটি সঠিকভাবে তৈরি করবে

 $result = mysql_query("SELECT ...");
 $rows = array();
   while($r = mysql_fetch_assoc($result)) {
     $rows['object_name'][] = $r;
   }

 print json_encode($rows);

1
+1 এটি একমাত্র উত্তর বলে মনে হচ্ছে যা JSON.org/example এর উদাহরণগুলির মতো একই বিন্যাসে JSON সরবরাহ করে ।
— নিষিদ্ধ-জিওইনজিনিয়ারিং

হ্যাঁ, এই উদাহরণটি প্রতি সারিতে একটি কী দেয়।
— মার্চ

26

http://www.php.net/mysql_query "" mysql_query()একটি উত্স প্রদান করে " বলেছে ।

http://www.php.net/json_encode বলে যে এটি "সংস্থান ব্যতীত" কোনও মান এনকোড করতে পারে।

আপনাকে পুনরাবৃত্তি করতে হবে এবং একটি অ্যারেতে ডাটাবেস ফলাফল সংগ্রহ করতে হবে, তারপরে json_encodeঅ্যারে।


2
mysql_query ফলাফল সেট দেয় না। mysql_fetch * এর জন্য এটি।
— অ্যান্ডি

হুম ... হ্যাঁ ... মাইএসকিএল_কোয়ারি এবং জসন_কোডের মধ্যে পুনরাবৃত্তির ক্ষেত্রে এটিই ঘটে। শুভ ডাক, ওয়াটসন
— হিউ বোথওয়েল

17

ধন্যবাদ এটি আমাকে অনেক সাহায্য করেছে। আমার কোড:

$sqldata = mysql_query("SELECT * FROM `$table`");

$rows = array();
while($r = mysql_fetch_assoc($sqldata)) {
  $rows[] = $r;
}

echo json_encode($rows);

এটি আমাদের একটি অ্যারে দেবে; 1) একটি ফাঁকা স্কোয়ার ব্র্যাকেট 2) এরপরে কোঁকড়ানো বন্ধনীটি আমাদের ফিরে আসা ফলাফল সারি যুক্ত করে অন্যটির থেকে এই পার্থক্যটি কী?
— gumuruh

11

ধন্যবাদ .. আমার উত্তর যায়:

if ($result->num_rows > 0) {
            # code...
            $arr = [];
            $inc = 0;
            while ($row = $result->fetch_assoc()) {
                # code...
                $jsonArrayObject = (array('lat' => $row["lat"], 'lon' => $row["lon"], 'addr' => $row["address"]));
                $arr[$inc] = $jsonArrayObject;
                $inc++;
            }
            $json_array = json_encode($arr);
            echo $json_array;
        }
        else{
            echo "0 results";
        }

9

উপরেরগুলি কাজ করবে না, আমার অভিজ্ঞতা অনুসারে, আপনি অ্যারেতে মূল-উপাদানটির নাম দেওয়ার আগে, আমি তার আগে চূড়ান্ত জসনে কোনও কিছুই অ্যাক্সেস করতে পারিনি।

$sth = mysql_query("SELECT ...");
$rows = array();
while($r = mysql_fetch_assoc($sth)) {
    $rows['root_name'] = $r;
}
print json_encode($rows);

কৌতুক করা উচিত!

সমাবস্থা


8

নীচের কোডটি এখানে কাজ করে!

<?php

  $con=mysqli_connect("localhost",$username,$password,databaseName);

  // Check connection
  if (mysqli_connect_errno())
  {
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

  $query = "the query here";

  $result = mysqli_query($con,$query);

  $rows = array();
  while($r = mysqli_fetch_array($result)) {
    $rows[] = $r;
  }
  echo json_encode($rows);

  mysqli_close($con);
?>

5

এটি সংখ্যাসূচক মানগুলির চারপাশে বক্তৃতা চিহ্ন স্থাপন করা বন্ধ করার জন্য আমার সহজ সমাধান ...

while($r = mysql_fetch_assoc($rs)){
    while($elm=each($r))
    {
        if(is_numeric($r[$elm["key"]])){
                    $r[$elm["key"]]=intval($r[$elm["key"]]);
        }
    }
    $rows[] = $r;
}   

5

দুঃখিত, এটি প্রশ্নের পরে অত্যন্ত দীর্ঘ, কিন্তু:

$sql = 'SELECT CONCAT("[", GROUP_CONCAT(CONCAT("{username:'",username,"'"), CONCAT(",email:'",email),"'}")), "]") 
AS json 
FROM users;'
$msl = mysql_query($sql)
print($msl["json"]);

মূলত:

"SELECT" Select the rows    
"CONCAT" Returns the string that results from concatenating (joining) all the arguments
"GROUP_CONCAT" Returns a string with concatenated non-NULL value from a group

সাবধান যে GROUP_CONCAT()দ্বারা সীমাবদ্ধ group_concat_max_len।
— উদয়জাল

4

আমরা পাওলো বার্গান্টিনো উত্তরটিকে এর মতো করে সহজ করতে পারি

$sth = mysql_query("SELECT ...");
print json_encode(mysql_fetch_assoc($sth));

4
<?php
define('HOST','localhost');
define('USER','root');
define('PASS','');
define('DB','dishant');

$con = mysqli_connect(HOST,USER,PASS,DB);


  if (mysqli_connect_errno())
  {
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

 $sql = "select * from demo ";

 $sth = mysqli_query($con,$sql);

$rows = array();

while($r = mysqli_fetch_array($sth,MYSQL_ASSOC)) {

 $row_array['id'] = $r;

    **array_push($rows,$row_array);**
}
echo json_encode($rows);

mysqli_close($con);
?>

aarray_push ($ সারি, $ row_array); অ্যারে তৈরি করতে সহায়তা করুন অন্যথায় এটি লুপের শেষ মান দেয়

মত এই কাজ পরিশেষে যোগ পদ্ধতি StringBuilder মধ্যে জাভা


3

ফর লুপ ব্যবহার করে আরও একটি বিকল্প:

 $sth = mysql_query("SELECT ...");
 for($rows = array(); $row = mysql_fetch_assoc($sth); $rows[] = $row);
 print json_encode($rows);

একমাত্র অসুবিধা হ'ল লুপটি ধীরে ধীরে হয় যখন উদাহরণস্বরূপ যখন বা বিশেষত ফোরচ


3

উদাহরণস্বরূপ $ ফলাফল = mysql_query ("ব্যবহারকারী প্রোফাইল থেকে" নির্বাচন করুন যেখানে NAME = 'পরীক্ষক' ");

১) যদি $ ফলাফল কেবল একটি সারি হয়।

$response = mysql_fetch_array($result);
echo json_encode($response);

২) যদি $ ফলাফল একাধিক সারির হয়। আপনাকে সারিগুলি পুনরাবৃত্তি করতে হবে এবং এটিকে একটি অ্যারেতে সংরক্ষণ করতে হবে এবং এতে অ্যারে সহ একটি জসন ফিরিয়ে দিতে হবে।

$rows = array();
if (mysql_num_rows($result) > 0) {
    while($r = mysql_fetch_assoc($result)) {
       $id = $r["USERID"];   //a column name (ex.ID) used to get a value of the single row at at time
       $rows[$id] = $r; //save the fetched row and add it to the array.
    }
}    
echo json_encode($rows);

3

আমারও একই চাহিদা আছে। আমি কেবল ফলাফলের বস্তুটি JSON ফর্ম্যাটে মুদ্রণ করতে চাই যাতে আমি নীচের কোডটি ব্যবহার করি। আমি আশা করি আপনি এটি কিছু খুঁজে পেতে হবে।

// Code of Conversion
$query = "SELECT * FROM products;";
$result = mysqli_query($conn , $query);

if ($result) {
echo "</br>"."Results Found";

// Conversion of result object into JSON format
$rows = array();
while($temp = mysqli_fetch_assoc($result)) {
    $rows[] = $temp;
}
echo "</br>" . json_encode($rows);

} else {
    echo "No Results Found";
}

3

Mysql_fetch এবং json_encode ব্যবহারের জন্য নীচের কোডটি চেক করুন। আপনাকে সারিগুলির মধ্য দিয়ে পুনরাবৃত্তি করতে হবে তবে আপনি যদি মাইসকলি ব্যবহার করেন তবে পরিস্থিতি পরিবর্তন হবে

$kt_query="SELECT * FROM tbl_xxx";
$kt_result = mysql_query($kt_query) or die('Query failed: ' . mysql_error());
$rows= array();
while($sonuc=mysql_fetch_assoc($kt_result))
{
    $rows[]=$sonuc;
}
print json_encode($rows);

3

আমি এই মত সমাধান

$stmt->bind_result($cde,$v_off,$em_nm,$q_id,$v_m);
    $list=array();
    $i=0;
    while ($cresult=$stmt->fetch()){    


        $list[$i][0]=$cde;
        $list[$i][1]=$v_off;
        $list[$i][2]=$em_nm;
        $list[$i][3]=$q_id;
        $list[$i][4]=$v_m;
        $i=$i+1;
    }
    echo json_encode($list);        

ফলস্বরূপ সেট হিসাবে এবং জাভাস্ক্রিপ্ট অংশে এই জাতীয় জেসন পার্স ব্যবহার করে এটি আজাক্সে ফিরে আসবে:

obj = JSON.parse(dataX);

2
$array = array();
$subArray=array();
$sql_results = mysql_query('SELECT * FROM `location`');

while($row = mysql_fetch_array($sql_results))
{
    $subArray[location_id]=$row['location'];  //location_id is key and $row['location'] is value which come fron database.
    $subArray[x]=$row['x'];
    $subArray[y]=$row['y'];


 $array[] =  $subArray ;
}
echo'{"ProductsData":'.json_encode($array).'}';

2

কোড:

$rows = array();

while($r = mysqli_fetch_array($result,MYSQL_ASSOC)) {

 $row_array['result'] = $r;

  array_push($rows,$row_array); // here we push every iteration to an array otherwise you will get only last iteration value
}

echo json_encode($rows);


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.