我如何使用json_encode()函数与MySQL查询结果?我是否需要遍历这些行,或者我可以将其应用到整个结果对象?
当前回答
下面的代码在这里可以正常工作!
<?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);
?>
其他回答
考虑到在mysql中通常没有任何嵌套的json对象,创建自己的编码函数是相当容易的
首先,检索mysqli的函数会生成一个数组:
function noom($rz) {
$ar = array();
if(mysqli_num_rows($rz) > 0) {
while($k = mysqli_fetch_assoc($rz)) {
foreach($k as $ki=>$v) {
$ar[$ki] = $v;
}
}
}
return $ar;
}
现在,函数将数组编码为json:
function json($ar) {
$str = "";
$str .= "{";
$id = 0;
foreach($ar as $a=>$b) {
$id++;
$str .= "\"".$a."\":";
if(!is_numeric($b)) {
$str .= "\"".$b."\"";
} else {
$str .= $b;
}
if($id < count($ar)) {
$str .= ",";
}
}
$str .= "}";
return $str;
}
然后使用它:
<?php
$o = new mysqli(
"localhost",
"root",""
);
if($o->connect_error) {
echo "DUDE what are you/!";
} else {
$rz = mysqli_query($o,
"SELECT * FROM mydatabase.mytable"
);
$ar = noom($rz);
echo json($ar);
}
?>
抱歉,这是在问题之后很长一段时间,但是:
$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
我们可以这样简化Paolo Bergantino的答案
$sth = mysql_query("SELECT ...");
print json_encode(mysql_fetch_assoc($sth));
http://www.php.net/mysql_query说“mysql_query()返回一个资源”。
http://www.php.net/json_encode说它可以编码任何值,“除了资源”。
您需要在数组中遍历和收集数据库结果,然后对数组进行json_encode。
下面的代码在这里可以正常工作!
<?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);
?>