Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php可以查询上一次查询的结果吗?_Php_Mysql_Search_Resultset - Fatal编程技术网

php可以查询上一次查询的结果吗?

php可以查询上一次查询的结果吗?,php,mysql,search,resultset,Php,Mysql,Search,Resultset,在某些语言中(我想到的是ColdFusion),可以对上一个查询的结果集运行查询。在php中(使用MySQL作为数据库)可以做类似的事情吗 我有点想做: $rs1 = do_query( "SELECT * FROM animals WHERE type = 'fish'" ); $rs2 = do_query( "SELECT * FROM rs1 WHERE name = 'trout'" ); 您可能希望在不接触db的情况下执行此操作: while($t = mysql_fetch_ar

在某些语言中(我想到的是ColdFusion),可以对上一个查询的结果集运行查询。在php中(使用MySQL作为数据库)可以做类似的事情吗

我有点想做:

$rs1 = do_query( "SELECT * FROM animals WHERE type = 'fish'" );
$rs2 = do_query( "SELECT * FROM rs1 WHERE name = 'trout'" );

您可能希望在不接触db的情况下执行此操作:

while($t = mysql_fetch_array($rs1)){
    if($t[name] == 'trout'){ 
        echo 'This is the one we\'re looking for!'; 
        break;
    }
}

在PHP中,这将是非常低效的。您必须循环遍历每一行,并检查其
名称是否为
trout
。然而,你有什么理由不能这样做吗

SELECT * FROM `animals` WHERE `type` = 'fish' AND `name` = 'trout'
在SQL中?这会快得多。

使用AND关键字

"SELECT * FROM animals WHERE type = 'fish' and name='trout'"

此外,您还可以使用LINQ for php

php没有类似的MySQL函数,但是有一个更高级的函数


编辑:对于那些不知道查询查询是什么的人来说,就是这样,有些人这样做是有目的的。使用AND运算符是****与****不同的事情!如果我希望脚本的某一部分的结果为username='animuson',然后希望该查询的所有结果为status='1',那么使用and运算符运行另一个查询是不符合逻辑的,那么在PHP中循环使用以前的结果更符合逻辑。不要在没有阅读关于为什么他们一开始没有被提升的评论的情况下提升投票率,那只是懒惰。如果你不知道人们在谈论什么,那么你不应该在一开始就投赞成票或反对票。

你也可以这样做

select morestuff from (select stuff from table where a = b ) where c = d;

如果您想要fish查询的结果,然后是结果加上鳟鱼,该怎么办?然后,您必须运行两个单独的查询…我认为您不理解查询的目的。在PHP内存中搜索它不会比再次敲打大型数据库更快吗?不过我可能错了。@Robus:可能吧。如果您在最初的fish查询中得到1000个结果中的100个,那么最好使用PHP进行搜索,而不是使用额外的查询再次筛选1000个结果。@Robus SQL是为与数据库中的数据交互而优化的,因此可能不是,考虑到正确索引的数据库。@wai933我想这主要取决于运气。我的意思是,看看我在回答中写的函数,它可能会在第一个循环中得到所需的行,这使得它比数据库快得多。但是,它可能是最后一个,在这种情况下,数据库很可能会更快。这只是使用and运算符的一种更复杂、更慢的方法。这并不是真正回答您的问题,但是使用SQL视图怎么样?