0

我有一个包含 5 列和多行的数据库。我正在使用 PHP 来获取数据并将其作为 JSON 作为数组回显。它呼应它的方式是每行中的数据是一个数组,而行本身是一个数组(数组中的数组)。

现在我使用 Ajax 将数据引入并希望将数组拆分为一个数组。到目前为止,我只能拆分行。我将如何进一步分裂?

这是PHP:

  //==== FETCH DATA
  $result = mysql_query("SELECT * FROM $tableName");

  //==== PUT DATA INTO ARRAY
  $array = array();
  while ($row = mysql_fetch_row($result)) {
    $array[] = $row;
  }

  //==== ECHO AS JSON
  echo json_encode($array);

这是阿贾克斯:

$.ajax({                                      
  url: 'assets/php/results.php',    
  data: "",
  dataType: 'json',                  
  success: function(data){

    //==== FETCH DATA FIELDS
    var row1 = data[0];
    var row2 = data[1];

    //==== UPDATE HTML WITH DATA
    $('#r-col span.row1').html(row1);
    $('#r-col span.row2').html(row2);
  }
});
4

1 回答 1

3

为了回答您的问题,让我给您一些提示,告诉您如何以更短的步骤实现这一目标。
首先,尝试使用 msqli_ 函数而不是 msql_(在 php 中),它具有更好的安全处理以及其他改进,也是 w3schools 推荐使用的函数。

有一个名为 mysqli_fetch_array() 的函数,它将完全按照您在单个命令中对 for 循环所做的操作。

为了回答你关于 json 的问题,你应该看看 json 的真正样子:

var data = {"menu": {
  "id": "file",
  "value": "File123",
  "popup": {
    "menuitem": [
      {"value": "New", "onclick": "CreateNewDoc()"},
      {"value": "Open", "onclick": "OpenDoc()"},
      {"value": "Close", "onclick": "CloseDoc()"}
    ]
  }
}}

Json 对象不是数组,它们是对象。这意味着我可以访问这样的信息:

data.menu.id //Which is equal to "file"<br>

或者

data[0][0]  //which is also equal to "file"<br>

或组合

data[0].value  //is equal to "File123"

了解这些对象工作方式的一个好方法是使用 Chrome 中的交互式控制台。它非常容易理解对象的打印。我还建议您阅读一些关于 javascript 的面向对象编程的内容。

简而言之:Json 对象不是数组,但您可以通过附加 . 或者 []

一个小提示:尽量避免在您的语句中使用 Select *,它们占用大量资源,只需按名称调用您需要的字段即可。
另外,msql_ 函数现在有点不推荐使用,尝试使用 msqli_ 函数,它们在安全方面有几个升级,你可以查看 w3schools.com 的例子。
最后,php 中有一个名为 msqli_fetch_array 的函数,它可以完全按照您的 for 循环所做的工作,它将您的查询输出转换为数组。



快乐编码。

于 2013-03-19T23:16:12.263 回答