2014-03-28 60 views
0

我已经编写了这个代码,理论上我想循环一个数组,并在select语句中使用每个值来检索适用的信息。然后将特定的值id映射为键,并将sql语句中的值映射为其关联值。虽然我似乎无法弄清楚如何将它作为一个值添加到我的数组中,但我确定要说出来。从sql语句检索数据

继承人我的代码

/* 
    * Loop through the hasNewModelIdInYear and retrieve the exterior media paths 
    * with a mapped id as a key. 
    */ 

    $mediapatharray = array(); 

    foreach ($hasNewModelIdInYear as $key => $value) { 

    $selectMediaPathFromValue = "SELECT `name` FROM `media` WHERE `id`='".$value['img1_media_id']."'"; 

    $res = $mysqli->query($selectMediaPathFromValue); 


     $mediapatharray[$value['model_id']] = $res; 
    } 

所有这些阵列的回报是一个充满键,但没有价值。随着变量$资源的阵列做我接下来要 - > fetch_value?因为我不知道为了从查询访问数据所需的语法?

认为麦克

+0

你没有理解价值观!!! –

+0

如果'id'列是整数(或甚至字符串),则可以构建用于IN()'子句的自定义变量。 – hjpotter92

+0

@ferozakbar OP的问题正是:“_With变量'$ res'然后我必须' - > fetch_value'_” – hjpotter92

回答

0

感谢您的回复,我试图让它变得比它需要的更复杂。我通过将整个媒体表放在一个多维数组中,然后遍历它们并比较值以及如果mathcing id映射名称来完成此操作。

简单的连接和sql查询来填充数组,然后将id映射到一个键和名称作为它的值。继承我的代码。

mediaarray是在它

$mediaIdPAthFromOld = array(); 

    foreach ($hasNewModelIdInYear as $hnkey => $hsvalue) { 
     foreach ($mediaarray as $mpavalue) { 
      if ($hsvalue['img1_media_id'] == $mpavalue['id']) { 
       $mediaIdPAthFromOld[$hsvalue['model_id']] = $mpavalue['name']; 
       } 
      } 
     } 

人口虽然这做了我想我假设有一个更EFFIENT办法做到这一点媒体表内容的数组。

认为麦克

1

这是不好的写你whan你有循环查询。你应该寻找基于img1_media_id
的阵列

你可以做follwing

$selectMediaPathFromValue = "SELECT `name` FROM `media` 
WHERE `id` IN = '$hasNewModelIdInYear'"; 

阵列应该按以下格式

$hasNewModelIdInYear = "12,21,22,65"; 
1

结果将失败或成功的结果返回false。 Mysqli结果将返回由数组索引组成的第一组数组。您将需要获取值并将其存储在数组中。尝试添加此代码。

while($row = $res->fetch_assoc()){ 

    $mediapatharray[$value['model_id']] = $row['name']; 
}