PHP高效查询mysql数据库

标签 php mysql

我正在从 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/

相关文章:

php - Wordpress - 在 index.php 上加载自定义 css

php - 为基于 PHP/MySQL 关键字的搜索分配多个关键字

php - 在电子邮件中发送 mysql 获取数组数据

mysql - 在 mysql 查询中插入字符串作为值

MySQL 'REPEATABLE READ' 事务异常行为

php - 规则=行在 PHP 中不起作用

php - 循环遍历 mysql 的东西

php - 在 php 中使用 posix_kill 时遇到问题

php - 将 bootstrap 与 Composer 一起使用

MySql 将长unix转换为时间戳(以毫秒为单位)