许多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

可以多次使用两种方式。因此,这是许多准备好的陈述或较少直接查询的选择

没有这样的问题。

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

so 您只是在查询中使用了至少一个变量的时间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);

最新更新