要回答您的第一个问题:
是的,您可以为结果和行变量使用您喜欢的任何变量名称。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/ )