2012-04-09 33 views
0

好吧,所以我创建了一个新的支持票据系统,但在我的票据搜索页面中,它不断给我提供像197行中的未定义变量的错误。奇怪的是,变量是在它上面定义的。请帮助我在这里是一个代码的链接:http://pastebin.com/AMzRLDK4While Loop在外部未定义时设置变量的问题。

我想让我可以查看支持票已打开并将它们标记为已读或更改状态并回复它们通过下午系统。我昨晚让它工作,但是我必须改变一些东西而没有意识到它的效果。

在此先感谢, 马特。

+0

它说什么变量是未定义的? – Chris 2012-04-09 14:02:49

+0

$ Sname和$ Sid – 2012-04-09 14:08:48

回答

2

看起来这是您第一次在代码中使用$ Sid或$ Sname。它们在一段代码块内,这意味着它们是唯一存在的地方。另外,我认为你想使用mysql_fetch_assoc()。它实际上将使用列名称而不是索引。 (也可能是最好关闭使用较新的MySQLi有以下几个原因)

while($raw = mysql_fetch_array($ret)){ $Sid = $raw['id']; $Sname = $raw['username']; } 

快速修复:

$Sid = null; //or 0 whichever makes sense for you 
$Sname = null; //or '' 
while($raw = mysql_fetch_assoc($ret)){ $Sid = $raw['id']; $Sname = $raw['username']; } 

然而,随着MySQL查询的限制1,你可以删除,而所有一起

$raw = mysql_fetch_assoc($ret); 
if($raw === false) 
{ 
    //Error Condition 
} 

$Sid = $raw['id']; 
$Sname = $raw['username']; 
+0

你推荐我做什么最好的修复?以及我在哪一行插入代码? – 2012-04-09 14:27:30

+0

@MattMyers为了解决这个问题,未定义的变量,我会使用没有'while'的第二个修复。您将替换第188行的代码。除此之外,特别是因为这是一个登录脚本,请查看MySQLi语句。他们会走很长一段路,以确保您的数据是干净的进入您的查询。 http://www.php.net/manual/en/class.mysqli-stmt.php – Chris 2012-04-09 14:34:33

+0

非常感谢您的帮助,但我确实偏离了您的代码示例(快速修复)一点点,因为它不是显示由提交的用户名,而不是null;在$ Sid和$ Sname之后,我使用了mysql抓取memid;和用户名;我将null更改为memid,因为它也不允许我单击输出的用户名,也不会将我带到成员页面。但现在效果很好,非常感谢:D – 2012-04-10 00:57:20