2012-05-29 47 views
0

好吧所以我想要做的事情应该清除下面的代码, 对于每一行我想运行它们的代码,如果头是0,运行第一个如果声明,如果它是1运行第二。mysql查询没有收到正确的回应...或者什么

问题是,我把它设置成什么都没有关系,它总是运行第二个如果声明,思想头始终是1,即使它不是。

测试我加入回声(INT)$行[“标题”]为第二IF语句,并为每一行,它呼应1.

人对如何我可以把它做任何线索我想要?

感谢您的帮助

我的PHP代码:

$result = mysql_query("SELECT * FROM LeftMenu_items"); 
while ($row = mysql_fetch_assoc($result)) 
{ 
    if ((int)$row['header'] = 0) 
    { 
     // echos value is on or not 
     echo "<tr><td class='LeftMenu'><a href='" . $row['url'] . "'><b>" . $row['text'] . "</b></a></td></tr>\n"; 
    } 
    else if ((int)$row['header'] = 1) 
    { 
     // header 
     echo "<tr><td class='LeftMenu'>" . (int)$row['header'] . "<b>" . $row['text'] . "</b></td></tr>\n"; 
    } 
    else echo "error displaying url"; 

我的表看起来像这样:

structure: 
id int 
text text  
url text  
Header tinyint 

data: 
1 Home http://drudexflash.com/ 1 
2 test1 http://text.com/ 0 
3 ttt blahz 1 
4 nullnull ass 0 

回答

2

的问题是,你要指定一个变量,而不是比较。

if((int)$row['header'] = 0) 

应该

if ((int)$row['header'] == 0) 

这不是一个罕见的错误,所以我有时会做的是切换值以及变量的顺序,只是为了说清楚,我比较VS分配。

例子:

if (0 = (int)$row['header']) // even if you don't catch this as incorrect 
          // php will throw a 'parse error' 
if (0 == (int)$row['header']) // correct, no error 

一些有用的文档:http://www.php.net/manual/en/language.expressions.php http://www.php.net/manual/en/language.operators.comparison.php

+0

这是至少一个问题与此做法。 –

+0

嗯,它的工作,但现在我也越来越“注意:未定义的指数:/路径/” – user1071461

+0

'注意:未定义的索引:/路径/'可能来自您的代码的不同部分。您似乎没有访问此块中的任何索引。 – Okonomiyaki3000