我正在从 mysql 数据库检索大量单个数据项,并构建了下面的代码,其中每个数据项的变量设置为与查询的 ID 相同。我的问题是该数组包含一些 50-100 个元素,因此查询似乎非常慢。如果有人可以查看代码并通知我是否可以以某种方式优化它以使其执行速度更快,我将非常感激。预先非常感谢您。
$idArray = [ // contains some 50-100 elements in total
"BANANA",
"APPLE",
"COCONUT",
"PEAR",
];
foreach($idArray as $val) {
$query = "SELECT * FROM {$tableName} WHERE ID = '{$val}'";
$result = mysqli_query($conn, $query) or die('error');
while($data = mysqli_fetch_array($result)) {
$$val = $data["COINFO"];
}
}
更新:我现在尝试使用 IN 关键字构建查询,但查询似乎在我的服务器上执行得非常慢,而我的本地主机上根本没有问题。因此,我想知道是否还有其他问题。
根据下面的评论,我知道最好的方法是应用参数化查询和bind_param,如果有人可以将上述代码转换为新的更新方法,我将非常感激!
最佳答案
尝试构造一个 IN 语句。这样您就可以进行一次查询,而不是循环遍历数组。
因此,构造后您的查询将如下所示:
SELECT * FROM tableName WHERE ID IN ('BANANA','APPLE','COCONUT','PEAR');
关于PHP高效查询mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54449749/