首页 > 解决方案 > 多次使用许多 Mysqli 准备好的语句或较少量的直接查询

问题描述

我的数据库有一个用户统计表,我无法找到正确的方法来选择更新后更改的字段。现在,我在一个带有函数的查询中选择了未知数量的列。

问题是使用什么会更好/更快:多个准备好的语句将使用不同的字段一一执行:

$stmt=$con->prepare("SELECT amount from achievement_list where field=?");
$stmt->bind_param("s",$query_field);
foreach($fields as $field){
   $query_field=$field;
   $stmt->execute();
   //some actions
}

或所有这些字段与一个直接查询:

$con->query("SELECT amount from achievement_list where field in($field_list)");
//some actions

这两种方式都可以多次使用。因此,它可以在许多准备好的语句或不那么直接的查询之间进行选择

标签: phpmysqlmysqli

解决方案


没有这样的问题。

准备好的查询与直接查询没有什么不同。两种情况下的数字完全相同。

因此,您只是在 100% 的时间内使用准备好的查询,以防查询中至少使用一个变量。时期。这里没什么好讨论的。

是的,运行单个查询比运行多个.

您的特定问题也适合这里。只需像这样运行一个准备好的查询

$in = str_repeat('?,', count($fields) - 1) . '?';
$sql = "SELECT field, amount from achievement_list where field in($in)"
$stmt = $db->prepare($sql);
$types = str_repeat('s', count($fields));
$stmt->bind_param($types, ...$fields);
$stmt->execute();
$data = $statement->get_result()->fetch_all(MYSQLI_ASSOC);

推荐阅读