PHP MySQL 执行多个相关查询的最佳方式

标签 php mysql performance mysqli

我需要查询(读取)一些数据,并在对不同的表执行另一个查询(读取)之前对其进行分析。

我看过mysqli multiple statements但他们没有关于第二个查询取决于第一个查询的结果的情况的文档。

看来我当前执行两个查询的代码可能不是最佳的。有没有更优化的方法来做到这一点?

//FIRST QUERY
$query1= "SELECT color FROM products WHERE type = '$productType';";
$result = $conn->query($query1);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $colorProduct = $row["color"];
    }
} 


//ANALYZE SEARCH RESULT FROM FIRST QUERY
if ($colorProduct == "green") {
    $colorType = "greenColorType";
}   
//a lot more analysis


//SECOND QUERY
$query2 = "SELECT price FROM Vendors WHERE color = '$colorType';";
$result2 = $conn->query($query2);

if ($result2->num_rows > 0) {
    while($row = $result2->fetch_assoc()) {
        $priceOfProduct = priceOfProduct . $row["price"];
    }
} 

$conn->close();

提前谢谢您。

最佳答案

为什么不将这 2 个查询合并为一个,稍后在需要时进行分析。例如:

"SELECT price FROM products
JOIN Vendors ON Vendors.color = products.color
WHERE type = $productType
AND color = 'green';"

MySQL 是声明性语言,因此通常最好“告诉它”您想要什么,然后再修改数据(如果需要)。

关于PHP MySQL 执行多个相关查询的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47663420/

相关文章:

javascript - 如何在不分配的情况下迭代 Javascript 映射或对象?

php - 如何修复 PHP 中删除表时的 SQL 错误?

php - 对于 MySQL TEXT 类型,我应该使用 PDO PARAM_LOB 还是 PARAM_STR?

python - Flask - 获取 session 的查询结果

Java循环效率

c - 堆栈问题: Local variables vs Arithmetics

php - 是否可以一次查询 3 个东西?

php - 没有来自 docker 容器的 php-fpm 错误日志

javascript - 文本框值在 angularjs 中返回空

mysql - 查询连接表上的计数不显示零计数结果