MySQL查询多个结果为单个值Array

时间:2014-01-02 07:40:47

标签: php mysql arrays

我有一个来自API的以下数组

$arrs =   array(
    "id"            => $ids,
    "names"         => $names,
    "description"   => $desc,
    "picture_url"   => $p_img;
    );

API要求此信息工作,遗憾的是每个请求只能有一个数组,因此我将此问题发送给开发人员:

如何列出多个项目,例如:

  $arrs=   array(
"items1" =>   array (
    "id"            => $ids,
    "names"         => $names,
    "description"   => $desc,
    "picture_url"   => $p_img;
    )
"items2" =>   array (
    "id"            => $ids,
    "names"         => $names,
    "description"   => $desc,
    "picture_url"   => $p_img;
    )
"items3" =>   array (
    "id"            => $ids,
    "names"         => $names,
    "description"   => $desc,
    "picture_url"   => $p_img;
    )
));

他们告诉我,目前是不可能的,因此,这个数组的“重要”部分是“名称”,当它与单个项目一起使用时没有问题我得到一个名字,完成没问题,但如果我有多个名字怎么办?我可以发送多个请求,但这将被视为洪水或类似的东西......只需要在一秒钟左右成像300个名称= 300个请求...确保我可以为每个请求暂停,但效率不高...... < / p>

API会读取这样的内容......

"id"            => 654,
"names"         => "John", // <-- Lets look at this...
"description"   => "Fancy desc...",
"picture_url"   => "http"//domain.com/assets/user/654/av_654_dd.jpg";

所以在我输出数组之前,我有一段时间的SQL查询来显示信息......

while ($names = $listnames->fetch_assoc()) {echo $names['names']. ', ';}

这将显示...... John,Karl,Lisa,Mark ......所以这个结构我很乐意将它放入我的阵列......事情是我不能在=&gt之后放一会儿; ......那会很傻,也不行......

"id"            => 654,
"names"         => "John, Karl, Lisa, Mark", // <-- Lets look at this...
"description"   => "Fancy desc...",
"picture_url"   => "http"//domain.com/assets/user/654/av_654_dd.jpg";

如果我只需要一个名字,那么就没有问题...但是在这种情况下我需要将所有名称作为值,所以,如何从WHILE循环中获取结果....所以我可以在别处使用那个结果......

感谢您抽出时间..

2 个答案:

答案 0 :(得分:1)

while ($names = $listnames->fetch_assoc()) { 
     $name_array[] = $names['names'];
}

$arrs=array(
"items1" =>   array (
    "id"            => $ids,
    "names"         => implode(', ', $name_array),
    "description"   => $desc,
    "picture_url"   => $p_img;
    )
);

答案 1 :(得分:0)

我们不知道您如何访问API。 如果这是REST API,则只能执行开发人员计划的操作。 如果这是一个框架或另一个库,您可以编辑它。

你应该收到你的结果:

$arrs =   array(
    array(
        "id"            => 1,
        "names"         => 'MyName',
        "description"   => 'MyDesc',
        "picture_url"   => 'MyPic',
    ),
    array(
        "id"            => 2,
        "names"         => 'MyName',
        "description"   => 'MyDesc',
        "picture_url"   => 'MyPic',
    ),
);

因此,如果您具有对SQL结果的完全访问权限,以获取所有结果的数据,您可以执行以下操作: $ results = array(); while($ row = $ listnames-&gt; fetch_assoc()){     $ results [] = $ row; }

如果要在输入中设置多个可能的名称,开发人员应该使用值数组进行开发。 对于名字,他们只需编码:“LIKE”.implode(“',LIKE'”,$ names)。“'” 他们还可以添加'%'以允许更多值,例如'约翰'代表'约翰尼'。

我认为我们需要更多信息来真正帮助你。