php - 多次使用许多 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
这两种方式都可以多次使用。因此,它可以在许多准备好的语句或不那么直接的查询之间进行选择
解决方案
没有这样的问题。
准备好的查询与直接查询没有什么不同。两种情况下的数字完全相同。
因此,您只是在 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);
推荐阅读
- mongodb - 如何根据字符串日期在 mongo db 中编写查询
- android - setEndIconOnClickListener method not found in TextInputLayout
- javascript - How do i modify LightningChart JS point line series to achieve mentioned functionalities?
- spring-mvc - Jackson 可以使用 Spring Data Repositories 将 Id 解析为对象吗?
- apache-kafka - Too frequently rolling logs for repartition topic results in out of memory in machine running kafka
- scala - 如何使用databrick向scala(spark)中的xml标签添加属性和值
- c++ - 重置未定义行为后使用 shared_ptr 吗?
- html - 最大宽度为 768px 时如何通过 flexLayout 隐藏 Div
- python - 如何在 python 中的医学图像的 2D np.array 上实现巴特沃斯滤波器
- php - 如何在 laravel 中使用 faker 播种