我正在尝试将mysql的结果转换为数组。以下是我的代码。但它返回[]
这个。
有人帮我解决这个问题......
result.php
$prep =$mysqli->prepare("select name,location from token where sen_uid=?");
$prep->bind_param("s",$id);
$prep->execute();
$result= $prep->get_result();
$rows= array();
while($r= $result->fetch_array(MYSQL_ASSOC))
{
$rows[] = $r;
}
$obj= json_encode($rows);
因为我希望json
的输出是一个数组
答案 0 :(得分:1)
我已经编辑了这样的代码。现在它正在运行。
<强> result.php 强>
$prep =$mysqli->prepare("select name,location from token where sen_uid=?");
$prep->bind_param("s",$id);
$prep->execute();
$result= $prep->get_result();
$payload= array();
while($r= $result->fetch_array(MYSQL_ASSOC))
{
$payload[]=array('name' =>$r['name'],
'lc' =>$r['location'],
);
}
$obj= json_encode($payload);
答案 1 :(得分:0)
好吧,让我们谈谈....
while($r= $result->fetch_array(MYSQL_ASSOC))
你在这里做的是将$r
设置为关联数组,然后在$rows
内设置完整数组;因此,如果$result
确实返回任何内容,则会在$rows
内成倍增加
也许你所追求的是这样的?
$prep =$mysqli->prepare("select name,location from token where sen_uid=?");
//should the bind_param function be i instead of s? i means integer and s means string
//$prep->bind_param("i",$id);
$prep->bind_param("s",$id);
$prep->execute();
$result= $prep->get_result();
$rows= array();
//for an array like [0][0], [0][1] use
//$rows= $result->fetch_array(MYSQLI_NUM);
//for an arary like [0]['name'], [0]['location'] use:
$rows= $result->fetch_array(MYSQLI_ASSOC);
$obj= json_encode($rows);
查询的执行看起来是正确的。我可能会添加一些错误检查,以确保准备没有失败。您是否尝试在MySQL中运行此查询以查看是否获得结果?
编辑;事实上,while
完全没有意义,因为$r
只能设置一次。我认为这个问题主要在准备好的查询中。
if($prep =$mysqli->prepare("select name,location from token where sen_uid=?")){
//should the bind_param function be i instead of s? i means integer and s means string
//$prep->bind_param("i",$id);
$prep->bind_param("s",$id);
if(!$prep->execute()){
print_r("Execute error: ".$mysqli->error);
}
$result= $prep->get_result();
$rows= array();
//for an array like [0][0], [0][1] use
//$rows= $result->fetch_array(MYSQLI_NUM);
//for an arary like [0]['name'], [0]['location'] use:
$rows= $result->fetch_array(MYSQLI_ASSOC);
$obj= json_encode($rows);
}else{
print_r("Prepare error: ".$mysqli->error);
}
出于调试目的,添加错误检查,如上面的代码片段
答案 2 :(得分:0)
我不认为在DB中有任何与您的查询相关的数据? 如果是,则尝试更改
此
$制备型&GT; bind_param(&#34; S&#34;,$ ID);
到
$制备型&GT; bind_param(&#34; I&#34;,$ ID);
答案 3 :(得分:-1)
您需要使用array_push方法将对象(值)推送到数组中。
$prep =$mysqli->prepare("select name,location from token where sen_uid=?");
$prep->bind_param("s",$id);
$prep->execute();
$result= $prep->get_result();
$rows= array();
while($r= $result->fetch_array(MYSQL_ASSOC))
{
array_push($rows,$r);
}
$obj= json_encode($rows);