Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.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 什么是MYSQL查询来检查返回的数组中是否有更多的引用递归?_Php_Mysql_Sql_Recursion - Fatal编程技术网

Php 什么是MYSQL查询来检查返回的数组中是否有更多的引用递归?

Php 什么是MYSQL查询来检查返回的数组中是否有更多的引用递归?,php,mysql,sql,recursion,Php,Mysql,Sql,Recursion,我有这张桌子 我的桌子 我有一个递归函数来显示结果 $query = mysql_query("SELECT * FROM myTABLE WHERE ReferenceID =$1 "); 所以这个查询将返回 返回阵列=3,4 他们停在那里。没有条目将它们作为参考 但是 返回 返回阵列=5,6 第五个层次更高 那么,我如何检查ReturningArray是否有更多级别的引用,或者它只是停在那里?如果只需要一个级别的引用检查,可以使用以下SQL进行检查: $dbLink = mysqli_co

我有这张桌子 我的桌子

我有一个递归函数来显示结果

$query = mysql_query("SELECT * FROM myTABLE WHERE ReferenceID =$1 ");
所以这个查询将返回

返回阵列=3,4

他们停在那里。没有条目将它们作为参考

但是

返回

返回阵列=5,6

第五个层次更高


那么,我如何检查ReturningArray是否有更多级别的引用,或者它只是停在那里?

如果只需要一个级别的引用检查,可以使用以下SQL进行检查:

$dbLink = mysqli_connect(); //host, user, pass etc go here as arguments
$refId = 1; // your ReferenceID 
$refIdEscaped = mysqli_escape_string($refId); //always remember to escape input
$query = "SELECT main.*, 
   CASE WHEN ref.ReferenceID IS NULL THEN 1 ELSE 0 END as recursion_exists 
   FROM myTABLE main
   LEFT JOIN myTABLE ref ON main.ReferenceId = ref.ID
   WHERE main.ReferenceID = '{$refIdEscaped}'";
您将使用一个附加列(
recursion\u exists
)从表中获取所有数据,该列的值为1(如果存在递归)或0(如果不存在)


对于多个递归,您也可以使用sql,添加更多的
LEFT JOIN
s,如上面的示例所示。

您可以显示完整的递归函数吗?因此,您希望第二个示例返回5,6,7,因为它的ref_id等于id=5?否。如果将来是否引用了5,6,只需要一个二进制答案。$query2=mysql\query(“SELECT main.*,如果ref.popid为NULL,则1 ELSE 0结束为递归_存在于paints main LEFT连接paints ref ON main.popid=ref.id,其中main.popid={$id}”);$tmprow=mysql_fetch_数组($query2);$recexist=$tmprow[“recursion_exists”];if($recexist==1){$classFloat=“float LEFT”;}ELSE{$classFloat=”“}解释什么“似乎不起作用”的意思是,错误/结果是什么。如果你把你的表贴在上面会好得多,我不同意-它确实起作用:)。看看这把小提琴(我从你的问题中添加了一些行,测试了查询,很好)-它起作用:它不起作用。“WHERE main.popid=2;“应该返回5=1,6=0以及您提供的数据(id:ReferenceID),就像上面的(5:2),(6:2)一样,它肯定会按照预期工作。请修改我发布的小提琴,使用您实际拥有的数据,并解释所需的结果以及您期望这些结果的原因。”。
$query = mysql_query("SELECT * FROM myTABLE WHERE ReferenceID =$2 ");
$dbLink = mysqli_connect(); //host, user, pass etc go here as arguments
$refId = 1; // your ReferenceID 
$refIdEscaped = mysqli_escape_string($refId); //always remember to escape input
$query = "SELECT main.*, 
   CASE WHEN ref.ReferenceID IS NULL THEN 1 ELSE 0 END as recursion_exists 
   FROM myTABLE main
   LEFT JOIN myTABLE ref ON main.ReferenceId = ref.ID
   WHERE main.ReferenceID = '{$refIdEscaped}'";