多次使用许多Mysqli准备的语句或较少量的直接查询

时间:2019-05-14 01:24:46

标签: php mysql 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

两种方法都可以多次使用。因此,可以在许多准备好的语句之间选择,也可以选择不太直接的查询方式

1 个答案:

答案 0 :(得分:0)

没有这样的问题。

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

因此,您只是在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);