使用 PHP 在一个 MySQL 查询中获取多行的最佳方法是啥? [复制]

Posted

技术标签:

【中文标题】使用 PHP 在一个 MySQL 查询中获取多行的最佳方法是啥? [复制]【英文标题】: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 【参考方案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)");
// ..

【讨论】:

以上是关于使用 PHP 在一个 MySQL 查询中获取多行的最佳方法是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

php mysql_insert_id 在多行上?

如何使用此函数从 mysql 和 PHP 获取多行

使用 PHP 将多行 Oracle 结果集插入 MYSQL

获取存在于多行和两列MySql PHP中的团队的得分总和

使用类从MySQL获取多行[关闭]

PHP/mysql:使用数组查询 MySQL 并在数组中获取结果