在包含查询结果的循环外使用php变量
我有一个PHP循环,在循环中包含一个查询,我设置了两个变量来包含某些结果,然后我想使用循环之外的变量。然而,当我这样做时,它们只是作为未定义返回。代码如下:在包含查询结果的循环外使用php变量,php,variables,Php,Variables,我有一个PHP循环,在循环中包含一个查询,我设置了两个变量来包含某些结果,然后我想使用循环之外的变量。然而,当我这样做时,它们只是作为未定义返回。代码如下: <?php $standardresult = mssql_query("SELECT Price FROM Extras WHERE ExtraID = 5 "); while ($standardrow = mssql_fetch_array($standardresult )) { $toughresult = m
<?php
$standardresult = mssql_query("SELECT Price FROM Extras WHERE ExtraID = 5 ");
while ($standardrow = mssql_fetch_array($standardresult )) {
$toughresult = mssql_query("SELECT Price FROM Extras WHERE ExtraID = 6 ");
while ($toughrow = mssql_fetch_array($toughresult)) {
$toughprice = $toughrow['Price'];
$standardprice = $standardrow['Price'];
echo $standardrow['Price'];
echo $toughrow['Price'];
?>
<td align="center">
<input type="radio" name="triple" value="yes" onclick="showPrice('<?php echo $standardrow['Price']; ?>','<?php echo $toughrow['Price']; ?>')" /> yes
</td>
<td> </td>
<td align="center">
<input type="radio" name="triple" value="no" onclick="showPrice('0','0')" checked="checked" /> no
</td>
<?php
}
}
?>
</tr>
</table>
<input type="hidden" name="ToughPrice" value="<?php echo $toughprice; ?>" />
<input type="hidden" name="StanPrice" value="<?php echo $standardprice; ?>" />
除了值未定义的标记外,还有其他输出吗?
如果不是,则其中一个查询不会返回结果,并且您从未在while语句之外定义变量
在java中,这种方法甚至会出现语法错误,因为这里所做的并不健壮。
在执行最后一个while语句之后,您希望变量中有什么内容?只有通过查询收到的可能条目集中的最后一个条目?
如果不需要多行,则不需要WHILE,只需获取第一个结果。我不知道“限制1”的MSSQL语句,但这也可能有帮助。除了值未定义的标记外,您还有其他输出吗?
如果不是,则其中一个查询不会返回结果,并且您从未在while语句之外定义变量
在java中,这种方法甚至会出现语法错误,因为这里所做的并不健壮。
在执行最后一个while语句之后,您希望变量中有什么内容?只有通过查询收到的可能条目集中的最后一个条目?
如果不需要多行,则不需要WHILE,只需获取第一个结果。我不知道“限制1”的MSSQL语句,但这也可能有帮助。您的代码看起来很好,但您犯了逻辑错误-您得到了,而循环结束了如果tehre没有更多的数据分配给您的$toughresult
。因此,循环结束后,$toughresult
不包含任何可用数据:
成功时返回MS SQL结果资源,如果未创建行,则返回TRUE
返回,或错误时为FALSE
所以只要做var_dump($toughresult)代码>以验证这一点。如果要使用数据,请中断循环或将数据复制到另一个不会被覆盖的变量
为了避免将来出现此类问题,请始终确保您检查了手册中可能的返回值,并确保您的代码正确处理它,包括边缘情况。您的代码看起来很正常,但您犯了逻辑错误-您得到了,而当循环结束时,如果没有更多数据分配给$toughresult
。因此,循环结束后,$toughresult
不包含任何可用数据:
$standardresult = mssql_query("SELECT Price FROM Extras WHERE ExtraID = 5 ");
while ($standardrow = mssql_fetch_array($result)) {
$toughresult = mssql_query("SELECT Price FROM Extras WHERE ExtraID = 6 ");
while ($toughrow = mssql_fetch_array($result)) {
成功时返回MS SQL结果资源,如果未创建行,则返回TRUE
返回,或错误时为FALSE
所以只要做var_dump($toughresult)代码>以验证这一点。如果要使用数据,请中断循环或将数据复制到另一个不会被覆盖的变量
为了避免将来出现此类问题,请始终确保检查手册中可能的返回值,并确保代码正确处理它,包括边缘情况
$standardresult = mssql_query("SELECT Price FROM Extras WHERE ExtraID = 5 ");
while ($standardrow = mssql_fetch_array($result)) {
$toughresult = mssql_query("SELECT Price FROM Extras WHERE ExtraID = 6 ");
while ($toughrow = mssql_fetch_array($result)) {
???我想应该是这样
$standardresult = mssql_query("SELECT Price FROM Extras WHERE ExtraID = 5 ");
while ($standardrow = mssql_fetch_array($standardresult)) {
$toughresult = mssql_query("SELECT Price FROM Extras WHERE ExtraID = 6 ");
while ($toughrow = mssql_fetch_array($toughresult)) {
也许这会有所不同
???我想应该是这样
$standardresult = mssql_query("SELECT Price FROM Extras WHERE ExtraID = 5 ");
while ($standardrow = mssql_fetch_array($standardresult)) {
$toughresult = mssql_query("SELECT Price FROM Extras WHERE ExtraID = 6 ");
while ($toughrow = mssql_fetch_array($toughresult)) {
可能会有所不同……未定义
意味着使用的变量未初始化。如果您的$toughprice
和$standardprice
代码在
循环期间从未通过第二个循环,则这将适用于您的$toughprice
和$standardprice
。从页面上呈现的html中可以明显看出这一点,因为不应创建动态创建的html
(td
s)
根据您的代码,在以下情况下会出现这种情况:
第一个查询不返回任何结果或结果
第一个查询确实返回了一些结果,但第二个查询没有
所以,调试这些查询,看看有什么问题
PS:我不知道为什么要使用两个嵌套的while
循环,内部不需要来自外部的数据。您有两个相互独立的静态查询。如果出于某种原因,您需要第一个循环的每个项目在第二个循环的结果上迭代,请在执行数据库查询后执行。现在,第二次查询得到了N次相同的结果(N是第一次查询的行)
最后,如果出于某种原因没有任何结果是预期的情况,那么在while
循环之前初始化变量,以消除未定义的错误
例如:
<?php
$toughprice = 0; // default value
$standardprice = 0; //default value
...
while (...) {
while (...) {
$toughprice = ...
$standardprice = ...
}
}
...
<input type="hidden" name="ToughPrice" value="<?php echo $toughprice; ?>" />
<input type="hidden" name="StanPrice" value="<?php echo $standardprice; ?>" />
未定义
表示使用的变量未初始化。如果您的$toughprice
和$standardprice
代码在
循环期间从未通过第二个循环,则这将适用于您的$toughprice
和$standardprice
。从页面上呈现的html中可以明显看出这一点,因为不应创建动态创建的html
(td
s)
根据您的代码,在以下情况下会出现这种情况:
第一个查询不返回任何结果或结果
第一个查询确实返回了一些结果,但第二个查询没有
所以,调试这些查询,看看有什么问题
PS:我不知道为什么要使用两个嵌套的while
循环,内部不需要来自外部的数据。您有两个相互独立的静态查询。如果出于某种原因,您需要第一个循环的每个项目在第二个循环的结果上迭代,请在执行数据库查询后执行。现在,第二次查询得到了N次相同的结果(N是第一次查询的行)
最后,如果出于某种原因没有任何结果是预期的情况,那么在while
循环之前初始化变量,以消除未定义的错误
例如:
<?php
$toughprice = 0; // default value
$standardprice = 0; //default value
...
while (...) {
while (...) {
$toughprice = ...
$standardprice = ...
}
}
...
<input type="hidden" name="ToughPrice" value="<?php echo $toughprice; ?>" />
<input type="hidden" name="StanPrice" value="<?php echo $standardprice; ?>" />
请正确缩进您的代码…抱歉,尝试缩进,但您已经编辑了它。:/谢谢。请正确缩进您的代码…对不起,tri