代码之家  ›  专栏  ›  技术社区  ›  Misha Moroshko Amr Mostafa

如何一次获取所有选定的ID?php/mysql问题

  •  0
  • Misha Moroshko Amr Mostafa  · 技术社区  · 15 年前

    我叫MySQL表 Files 它有 file_id 列和 file_type 列(以及与问题无关的其他列)。

    我想要所有的 文件ID 所有图片文件(即 file_type='picture' )

    我是这样做的:

    $pictures_query = mysql_query("SELECT file_id FROM Files WHERE file_type='picture')
    

    现在的问题是:我如何把所有的图片 文件ID 在阵列中?

    我想这样做:

    $pictures_ids = array();
    
    while ($row = mysql_fetch_row($pictures_query)) {
        $pictures_ids[] = $row[0];
    }
    

    这个循环真的有必要吗,或者有更好的方法来做这个?

    3 回复  |  直到 15 年前
        1
  •  4
  •   Tatu Ulmanen    15 年前

    你可以用 GROUP_CONCAT 具有 explode 要避免循环:

    $pictures_query = mysql_query("SELECT GROUP_CONCAT(file_id) FROM Files WHERE file_type='picture'");
    
    $file_ids = explode(',', mysql_result($pictures_query, 0));
    
        2
  •  2
  •   ITroubs    15 年前

    只要不使用任何其他隐藏循环的功能,循环是必需的。 Doctrine 是通过水合作用还是 MYSQLI 使用它的迭代器 next_result() 函数或其 fetch_all function() .

        3
  •  1
  •   Pekka    15 年前

    循环实际上是必要的。(更新:除非使用 GROUP_CONCAT 如塔图所示)。

    PDO有一个 fetch_all() 方法,但是 mysql_* 功能没有。