我的数据库有一个用于用户统计的表,我找不到更新后选择更改字段的正确方法。现在,我使用一个函数在一个查询中选择了未知数量的列。
问题是什么将更好/更快地使用: 多个准备好的语句将在不同的字段中一对一地执行:
$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
两种方法都可以多次使用。因此,可以在许多准备好的语句之间选择,也可以选择不太直接的查询方式
答案 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);