使用 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
使用,请改用OR
或IN()
是的,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 查询中获取多行的最佳方法是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章