【问题标题】:Using PHP what is the best way to get multiple rows in one MySQL query? [duplicate]使用 PHP 在一个 MySQL 查询中获取多行的最佳方法是什么? [复制]
【发布时间】:2014-06-06 17:45:08
【问题描述】:

在一个 MySQL 查询中获取多行的最佳方法是什么。

我有一个 ID 数组:

$id_array = array('34','341','342','334','344','354','3234','33234','3234','3234');

我想从我的 mysql 数据库中获取与这些 id 关联的标题

我有两种方法:

1) 示例

foreach($id_array as $id){
    $query = mysqli_query($con, "SELECT title FROM content WHERE id = '$id'");
    $id_db = mysqli_fetch_row($query);
    echo $id_db['title'];
}

2) 示例

$query = mysqli_query($con, "SELECT title FROM content WHERE id = '$id_array[1]' AND id = '$id_array[2]' AND id = '$id_array[3]' AND 'id = $id_array[4]' AND id = '$id_array[5]'");

while($result = mysqli_fetch_assoc($query)){
    echo $result['title'];
}

我在高负载网站上工作,并希望使用最佳解决方案。 上面的代码不是 100% 完整的,它只是这个想法的原始实现。 数组元素的数量可以从 1 到 1k。

【问题讨论】:

  • 不是id你的主键吗?
  • 第二个示例无法通过AND 使用,请改用ORIN()
  • 是的,id 是唯一的,增量 id。
  • 在数组方法man中使用mysql
  • 您的第二个示例不起作用 - 因为您使用 AND 而不是 OR。但是绑定参数呢? Read more

标签: php mysql


【解决方案1】:

在数组方法man中使用mysql。

【讨论】:

    【解决方案2】:

    如果您想获取数组中 id 的标题:

    $db = new mysqli('server', 'user', 'password', 'db');
    $stmt = $db->prepare('select title form content where id = ?');
    $stmt->bind_param('i', $i);
    $stmt->bind_result($title);
    $titles = array();
    foreach($id_array as $a) {
      $i = $a;
      $stmt->execute();
      array_push($titles, $title);
    }
    

    【讨论】:

      【解决方案3】:

      这个解决方案怎么样?

      $ids = implode(',',array_map('intval',$id_array));
      $query = mysqli_query($con, "SELECT title FROM content WHERE id IN ($ids)");
      // ..
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-14
        • 2013-05-06
        • 2011-06-21
        • 2014-06-24
        • 1970-01-01
        相关资源
        最近更新 更多