如何从 php 脚本中获取 JSON 格式的 mysql 表的所有值?

Posted

技术标签:

【中文标题】如何从 php 脚本中获取 JSON 格式的 mysql 表的所有值?【英文标题】:How can I get all values of a mysql table in JSON from a php script? 【发布时间】:2011-04-27 16:34:52 【问题描述】:

这是一个从 mysql (一行) 获取表值的 php 脚本。 & 以 JSON 形式回显

<?php  
      $username = "user";  
      $password = "********";  
      $hostname = "localhost";  
      $dbh = mysql_connect($hostname, $username, $password) or die("Unable to 
      connect to MySQL");  
      $selected = mysql_select_db("spec",$dbh) or die("Could not select first_test");  
      $query = "SELECT * FROM user_spec";  
      $result=mysql_query($query);     
      $outArray = array(); 
      if ($result)  
      while ($row = mysql_fetch_assoc($result)) $outArray[] = $row; 
        
      echo json_encode($outArray);  
?> 

这是用于接收和打印 json 数据的 html 文件。 src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"> //$('document').ready(function()

    function Preload() 
    $.getJSON("http://localhost/conn_mysql.php", function(jsonData)  
    $.each(jsonData, function(i,j)
     alert(j.options););
    ); 

// );
    </script></head>

    <body onLoad="Preload()">
    </body>

</html> >

【问题讨论】:

你问过这个了吗? ***.com/questions/3963057/… 不,代码是相同的,我问过其他早期的事情,但现在有了一些清晰和添加的代码,我有新的问题比以前的问题更重要。但如果有什么特别需要关心的,请告诉我。 【参考方案1】:

您的 PHP 需要实际将所有行放在一起:

$query = "SELECT * FROM user_spec"; 
$result=mysql_query($query);    
$outArray = array();
if ($result) 
  while ($row = mysql_fetch_assoc($result)) $outArray[] = $row;

echo json_encode($outArray);

您的 javascript 需要查看每一行..

$.getJSON("/whatever.php", function(jsonData)  
   for (var x = 0; x < jsonData.length; x++) 
      alert(jsonData[x].options);
   
);

【讨论】:

你用准确的 php 语法输入了 ech 行吗? @babar for each 在 javascript 代码中,而不是 PHP 端。 你确定每个循环都有 javascript 吗? 是的,它没有输出。如果我运行 php 脚本,则输出为 ["options":"smart_exp"] 其中 options 是列的名称和 smart_exp 第一行。 好的,它在 javascript 中称为“for in”循环,其语法为“for(var row in jsonData)alert(row.options);”但它会打开一个警告说“ undefined' 使用你的代码,而不是值在 HTML 中输出,而 php 输出 ["options":"smart_exp"],'smart_exp' 是 'options' 列中的第一个值。【参考方案2】:
<?php 
    $username = "user"; 
    $password = "********"; 
    $hostname = "localhost"; 
    $dbh = mysql_connect($hostname, $username, $password) or die("Unable to connect 
         to MySQL"); 
    $selected = mysql_select_db("spec",$dbh) or die("Could not select first_test"); 
    $query = "SELECT * FROM user_spec"; 
    $result=mysql_query($query);

    $_ResultSet = array();

    while ($row = mysql_fetch_assoc($result)) 
       $_ResultSet[] = $row;
    
       echo json_encode($_ResultSet); 
?>

你的 jQuery 看起来像:

$.getJSON("/yourscript.php", function(data) 
    $.each(data, function(i, j) 
        // use: j.columnName
    );
);

祝你好运

【讨论】:

我无法评论 Fosco 的答案,但如果查询返回多于一行,您的示例将不起作用。只有第一个会返回给 getJSON。【参考方案3】:

mysql_fetch_assoc 只会从数据库返回一行。您将需要一个循环来检索所有行:

$data = array();
while ($row = mysql_fetch_assoc($result)) 
    // add some or all of $row to the $data array

echo json_encode($data);

【讨论】:

您的解决方案也与 Fosco 问题相同,但差别不大。 HTML 的输出是相同的,即警告框输出“未定义”。而 php 中的 urs json echo 输出列的最后一个 'options' 值,而 Fosco 的 json echo 输出 options 列的第一个 'options' 值。

以上是关于如何从 php 脚本中获取 JSON 格式的 mysql 表的所有值?的主要内容,如果未能解决你的问题,请参考以下文章

无法从 php 脚本获取 JSON,但可以从 file.json 获取

如何使用 php 从 json 获取特定的电子邮件数据

使用以下格式从 PHP 中的 JSON 数组获取值?

无法从服务器上的 PHP 文件中获取 JSON 格式的数据

将数据从 PHP 脚本发送到 iOS

从 PHP 脚本返回 JSON 和 HTML