从sql语句中检索数据

时间:2014-03-28 16:53:29

标签: php sql arrays

我编写了这段代码,理论上我想循环一个数组,并在select语句中使用每个值来检索适用的信息。然后将特定值id映射为键,将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;
    }

所有数组返回的是一个充满键但没有值的数组..使用变量$ res,我必须 - > gt; fetch_value?因为我不确定从查询中访问数据所需的语法?

对待迈克

3 个答案:

答案 0 :(得分:1)

你在循环中查询是不好写的。你应该根据img1_media_id的数组进行搜索

你可以做下面的

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

数组应该遵循以下格式

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

感谢您的回复,我试图让它变得更加复杂。我通过将整个媒体表放在一个多维数组中然后循环遍历它们并比较值并且如果计算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'];
              }
           }
      }

虽然这已经完成了我想要的假设有一种更有效的方法来做到这一点。

对待迈克