php - 如何减少多个依赖查询

标签 php mysql

我想知道我是否可以稍微清理一下,我想做一个嵌套的 sql 语句,但不确定如何做。

$serverfile = mysqli_fetch_array(mysqli_query($link,"SELECT `Server_ID` 
    FROM `FileServerFiles` 
    WHERE `File_ID` ='$fileid' 
    limit 1"));
$server = mysqli_fetch_array(mysqli_query($link,"SELECT `ExternalDomain`,`AccessFile` 
    FROM `FileServers` 
    WHERE `ID` ='".$serverfile['Server_ID']."'"));

我想要这样的东西吗?

    $server = mysqli_fetch_array(mysqli_query($link,"SELECT `ExternalDomain`,`AccessFile` 
        FROM `FileServers` 
        WHERE `ID` ='(SELECT `Server_ID` 
            FROM `FileServerFiles` 
            WHERE `File_ID` ='$fileid' 
            limit 1)'"
    ));

最佳答案

这个查询应该做到;因为您只查询一个项目,所以您真的不需要连接:

SELECT `ExternalDomain`,`AccessFile` 
FROM `FileServers` 
WHERE `ID` IN (SELECT `Server_ID` 
    FROM `FileServerFiles` 
    WHERE `File_ID` ='$fileid' 
    limit 1
);

顺便说一句,我假设 $fileid 已经被正确清理;您还可以考虑准备好的陈述(和/或)。

关于php - 如何减少多个依赖查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16167927/

相关文章:

php - 将用户从动态网址重定向到静态网址(带有两个参数)

mysql - 提取 key :Value from column fields in Hive

php - SQL 参数未被替换

MySQL 自连接花费的时间太长——我可以简化这个查询吗?

javascript - 创建另一个帐户后显示失败 "Sorry, your registration failed. Please go back and try again."

php - codeigniter 将数据库驱动程序调用扩展为未定义的方法 my_db_mysql_driver::select()

php - 使用多个条件从 SQL 中的表中删除多行

php - 由于不需要的 301,$this->input->post() 总是返回 FALSE

php - 使用 PHP 在多个页面上存储数据

mysql - 对列进行限制的建模数据库