我正在从mysql数据库中检索很多单个数据项,并构造了下面的代码,其中每个数据项的变量都设置为与查询的ID相同。我的问题是数组包含大约50-100个元素,结果查询似乎非常缓慢。如果有人可以查看该代码并通知我是否可以对其进行优化以使其执行得更快,我将非常感激。预先非常感谢。
+
更新:我现在尝试使用IN关键字构造查询,但是查询似乎在我的服务器上执行得非常慢,而在本地主机上根本没有任何问题。因此,我想知道是否还会有其他问题。
根据下面的评论,我了解最佳方法是应用参数化查询和bind_param,如果有人可以将上述代码转换为新的更新方法,我将不胜感激!
答案 0 :(得分:1)
尝试构造一个IN语句。这样,您可以进行一个查询,而不是遍历整个数组。
因此,构建后的查询将是这样的:
SELECT * FROM tableName WHERE ID IN ('BANANA','APPLE','COCONUT','PEAR');
答案 1 :(得分:0)
您可以更改代码,这样就不必使用每次循环迭代来运行查询,而是可以使用 IN 关键字构造查询。该查询将仅运行一次:
$idArray = [ // contains some 50-100 elements in total
"BANANA",
"APPLE",
"COCONUT",
"PEAR",
];
$query = "SELECT * FROM {$tableName} WHERE ID IN ('" . implode("','", $idArray) . "')";
$result = mysqli_query($conn, $query) or die('error');
while($data = mysqli_fetch_array($result)) {
$$val = $data["COINFO"];
}