PHP查询结果和PHP循环的名称。

时间:2012-10-12 12:33:23

标签: php sql-server

这可能是一个简单的问题,但我无法找到一个我能理解的明确答案。我使用PHP循环很多,我对PHP很新,所以它们通常很简单:

    <?php 

    $result = mssql_query("SELECT Price FROM Window_Extras WHERE ExtraID = '4' "); 

    while ($row = mssql_fetch_array($result)) { 
    ?>

<a title="<?php echo $row['Colour']; ?>"></a>

<?php }?>

这是一个非常简单的例子,没有多大意义,但我希望它能说明我是如何使用它们的。我想问的问题是,如果$ row和$ result必须命名为它才能工作,例如它们可以命名为$ priceresult和$ pricerow吗?

这是因为有时我想对单个循环使用多个查询,例如:

<?php 

    $result = mssql_query("SELECT Price FROM Extras WHERE ExtraID = '4' ");
$colourresult = mssql_query("SELECT ColourID FROM Colours WHERE Type = '8' ");

    while ($row = mssql_fetch_array($result, $colourresult)) { 
    ?>

当我试图回应时,这无效:

<?php echo $row['ColourID']; ?>

任何人都可以告诉我应该如何接近这个,如果我在正确的轨道上。对不起,如果我没有很好地解释它。

3 个答案:

答案 0 :(得分:2)

回答你的第一个问题:

是的,您可以使用您喜欢的任何变量名称作为结果和行变量。 PHP并不关心你所谓的它们,实际上在任何给定的时间都可以使用它们中的几个,在这种情况下它们显然需要有不同的名称。

然后,您通过询问以下代码无效的原因来跟进该问题:

$result = mssql_query("SELECT Price FROM Extras WHERE ExtraID = '4' ");
$colourresult = mssql_query("SELECT ColourID FROM Colours WHERE Type = '8' ");

while ($row = mssql_fetch_array($result, $colourresult)) { 
     ....
}

原因是_fetch_array()函数一次只能处理一组结果。您需要为每个行获取一个单独的行数组。

目前还不清楚你要对这两个查询做些什么,以及为什么你想要以你展示的方式将它们放在同一个循环中。

我将假设这两个查询以某种方式链接,这使得您可以像这样使用它们一样合理吗?也许您正在加载的Extra项目具有已知颜色;即,您知道编号为4的额外项目是否使用编号为8的颜色进行着色?

通常情况下,程序不会使用这些知识编写;它将成为数据的一部分。所以在Extras表中,你会有一个ColourID字段,它包含值8.程序将加载Extras记录,看到ColourID已设置,然后根据它看到的内容加载匹配的Colors记录。

因此,您的代码可能如下所示:

$result = mssql_query("SELECT Price FROM Extras WHERE ExtraID = '4' ");

while ($row = mssql_fetch_array($result)) { 
    $colourresult = mssql_query("SELECT ColourID FROM Colours WHERE Type = '".$row['colourID']."' ");
    while ($row2 = mssql_fetch_array($result)) { 
        ....
    }
}

在内部while循环中,您可以分别使用$row$row2访问任一查询中的字段(同样,您可以根据需要命名这些字段)。

然而,这不是故事的结束,因为SQL实际上能够将这两个查询合并为一个而不需要所有PHP代码,使用一个东西调用SQL JOIN

现在我们可以编写更复杂的查询,但回到更简单的PHP代码:

$result = mssql_query("SELECT Extras.Price, Colours.ColourName FROM Extras WHERE ExtraID = '4' INNER JOIN Colours ON Colours.ColourID = Extras.ColourID");

while ($row = mssql_fetch_array($result)) { 
     ....
}

如果您是PHP和SQL的初学者,这些概念对您来说可能都是新手,所以我建议您尝试使用它们,并尝试使用它们,最重要的是,在继续之前阅读一些(优质)教程。更进一步。

希望有所帮助。 :)

(PS:正如我上面所说的那样,确保你正在阅读好的教程;提防错误的PHP示例和教学网站 - 那里有很多,教授糟糕的代码和过时的技术;确保你是阅读有价值的东西。一个好的起点可能是http://phpmaster.com/

答案 1 :(得分:0)

这是因为mssql_fetch_array只能接受一个结果集。所以删除$ result并留下$ colourresult应该适合你。

请参阅:http://php.net/manual/en/function.mssql-fetch-array.php

答案 2 :(得分:0)

您可以随意调用变量($ ...),通常最好以您能理解的方式命名它们,因此PHP手册中的大多数示例都包含$ row,$ result等变量, $ query等

就数据库查询而言,您只能将一个查询传递给mssql_query方法。如果您需要显示来自不同表的数据,则应尽可能使用SQL尝试加入表,而不是循环遍历多个结果集。