奇怪的PHP错误与变量名称

时间:2011-11-11 06:08:20

标签: php

这对我来说是个大难题。

我有一行代码如下:

$Fields = mysql_fetch_assoc($Result);

然后我这样称呼它:

<?php echo $Fields['BusinessName']; ?>

奇怪的是,没有错误,但没有显示数据。但是,当我将变量 $ Fields 重命名为 $ Field 时,数据会显示。

对于本地测试,我使用了Ubuntu,并且首次在主机(LAMP)上发现错误。

我检查了$ Fields是否是PHP中的保留字,但我似乎无法找到任何提示。

感谢对此的任何意见。 谢谢!

以下是工作代码:

$strQuery = "SELECT * FROM tblAds WHERE AdRef = '{$ThisAd}' LIMIT 1 ";
$Result = mysql_query($strQuery);
$Field = mysql_fetch_assoc($Result);

现在在html正文区域中,我插入了前面提到的echo语句,并且它有效。

但是当我将其更改为$ Fields时,没有错误,也没有输出。当我说没有输出时,字段内容显示为空白。但是页面继续加载而没有数据。

只是对于好奇的人,有一个关于已经声明的会话变量的错误警告,但这不相关。

我希望这很清楚。

4 个答案:

答案 0 :(得分:1)

PHP中没有神奇之处。

如果其中一个变量不起作用 - 那就是一个愚蠢的错字。

正如您已经被告知的那样,

转向error_erporting(E_ALL); ,以便从您的PHP中获取帮助以发现错字。
这都是

如果你仍然无法发现它 - 至少提供一个完整的,可重现的代码,让每个人都运行它,看看有什么问题。

再次。
看,你必须发布代码,而不是它的罗嗦描述。

问题包括"But the moment I change variable name, something went wrong" 唯一可能的答案是“有一些错误”。你不明白吗? 不可能对模糊的问题给出一定的答案!

  
      
  • 现在在html正文区域,
  •   

为什么在HTML体区?为什么不到位?这些地方之间有多少代码?这个变量有多少种可能被覆盖? 为什么不在这段代码中添加一行,回显您的变量立即

答案 1 :(得分:0)

试试这个:

$Fields = mysql_fetch_assoc($Result);
foreach($Fields as $field){
   echo $field['BusinessName'];
}

当然你不能回应数组,因为$ Fields是一个数组。你应该预先知道

答案 2 :(得分:0)

您可以尝试拨打var_dump($var)功能,以显示变量$Fields$Field或其他任何内容中包含的数据。

在php.net上查找一些使用mysql_fetch_assoc()的工作示例也很有帮助。

答案 3 :(得分:-1)

您之前已声明并初始化了$Field

$Fields是一个多维数组,如下所示:

$Fields[0]['BusinessName'];

它有多个“BusinessName”,因此变量实际上填充了一堆整数键,然后与您的字段相关联,包括“BusinessName”。