【问题标题】:Fetch data in the format [1,2,3] from mysql database using php and jquery使用 php 和 jquery 从 mysql 数据库中获取格式为 [1,2,3] 的数据
【发布时间】:2015-05-14 23:12:31
【问题描述】:

我的 jquery 代码连接到 getdata.php。这里val 是动态值,每次从下拉列表中选择一个选项时都会调用该函数。

    function getMoleculeData(val){
      var molval=val;
      var url = 'getmoldata.php';
     $.ajax({ 
      url: url,
      data: 'molval='+molval,
      method:'POST',
      success: function(moldata) {        
      alert(moldata);
        }
     });
    }

我的getdata.php 代码放在这里

    <?php  
      $molval = $_POST['molval']; //  consider $_POST['molval']=ABC 
      $dbhost = "localhost";
      $dbuser = "root";
      $dbpass = "";
      $dbname= "userdata";
      $conn = mysql_connect($dbhost, $dbuser, $dbpass);
      mysql_select_db($dbname) or die ();   
       $query = "SELECT cm_id, CORP_RANK, CORP_MKT_SHARE, COMBINED_MOLECULE FROM PRODUCT_UNIVERSE_D WHERE COMBINED_MOLECULE ="."'$molval'";

       $result = mysql_query($query) or die(mysql_error());
       $i = 1; 
         $array = array();
         while($row = mysql_fetch_array($result) { 
         $array[] = $row;
         echo $row['CORP_RANK']; // etc
         } 

       ?>

这是我的桌子PRODUCT_UNIVERSE_D

   cmid  |  CORP_RANK | CORP_MKT_SHARE |  COMBINED_MOLECULE  |    DATE
     1   |     10     |       30       |         ABC         |  01-04-2013
     2   |     5      |       50       |         ABC         |  03-06-2013
     3   |     8      |       40       |         ABC         |  23-09-2013
     4   |     3      |       10       |         XYZ         |  05-01-2014

当我在下拉列表中选择 ABC 时,在 where 子句中给出了相同的值,我能够获取结果。对于上面用getdata.php 编写的代码,我得到的输出是1058,即 CORP_RANK 的值,其中 COMBINED_MOLECULE = 'ABC'。但要求是我必须以[10,5,8] 的形式获得结果。如何以这种数组格式获取结果,以及如何分别获取所有列,如 $row['CORP_MKT_SHARE'] = [10,50,40] 并在index.php 的成功函数中分别显示为

    [10,5,8] and [10,50,40] for furthur use

请帮帮我,因为我在数组的基础上并不完美,所以我无法得到结果。提前致谢

【问题讨论】:

    标签: php jquery mysql arrays ajax


    【解决方案1】:

    如果您的目标是将数据输出为 json 格式。

    example:
    $array = array(1,2,3);
    var_dump(json_encode($array));
    

    你会得到这个输出:

    string(7) "[1,2,3]" 
    

    最好这样改变你的循环:

    for($array = array();$row = mysql_fetch_array($result);$array[] = $row);
    json_encode($array);
    

    当您想使用 ajax 从 php 文件中检索数据时,这是最好的方法。

    使用您的代码:

    while($row = mysql_fetch_array($result)) { 
       $rank[] = $row['CORP_RANK'];
       $share[] = $row['CORP_MKT_SHARE'];
    }
    $array = array('CORP_RANK'=>$rank,'CORP_MKT_SHARE'=>$share);
    json_encode($array);
    

    希望这会有所帮助。

    【讨论】:

    • 我得到了相同的输出,例如 [{"0":"1","cm_id":"1","1":"5","CORP_RANK":"5" ,"2":"50","CORP_MKT_SHARE":"50","3":"ABC","COMBINED_MOLECULE":"ABC"},{"0":"2","cm_id":"2" ,"1":"8","CORP_RANK":"8","2":"50","CORP_MKT_SHARE":"50","3":"ABC","COMBINED_MOLECULE":"XYZ"}]但我想以 [ABC, ABC, ABC] 格式获取它,例如 COMBIND_MOLECULE 和 [10, 5. 8] 用于 CORP_RANK @Ronnel Padernal
    • for($array = array();$row = mysql_fetch_array($result);$array[] = $row['CORP_RANK']);只获取 CORP_RANK 数据,
    • Thanq.. 它有效 :) 我还有一个疑问。如何分别获取这些值,例如如果我想将 $row['CORP_RANK'] 附加到 div 并将 $row['CORP_MKT_SHARE'] 附加到其他 div 我如何在从 getdata.php 获取它到 jquery 代码后附加跨度>
    • 您可以使用 JSON.parse(json) 将 json 数据从 getdata,php 转换为 javascript
    • @DarkZ3ro11 请给代码。我对这个领域很陌生。请不要介意
    猜你喜欢
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 2013-04-11
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多