如何将mysql结果转换为php中的数组?

时间:2017-11-08 10:02:41

标签: php mysql arrays

我正在尝试将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的输出是一个数组

4 个答案:

答案 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);