如何从 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 行吗? @babarfor 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 表的所有值?的主要内容,如果未能解决你的问题,请参考以下文章