2012-07-27 113 views
1

我的代码不会工作。 它只是打印出默认PHP Array和Switch Case Statement

这里是PHP

$updatesQuery = "SELECT * FROM updates WHERE Isnote = 0"; 
     $rs = mysql_query($updatesQuery) or 
     die("SQL: $usersQuery)<br />".mysql_error()); 
     while($row = mysql_fetch_array($rs)) { 
      switch ($i){ 
       case $row[CatID]=1: 
        $i = "kunder"; 
        break; 
       case $row[CatID]=2: 
        $i = "bokningar"; 
        break; 
       case $row[CatID]=3: 
        $i = "offerter"; 
        break; 
       case $row[CatID]=4: 
        $i = "leverantorer"; 
        break; 
       case $row[CatID]=5: 
        $i = "kalender"; 
        break; 
       default: 
        $i = "no work"; 
        break; 
      } 
      echo $i;     
     } 

SQL查询是有效的。 但是我的输出只是默认值。 “没有工作”。

我写错了什么?

+0

其中'$ i'定义? – Gntem 2012-07-27 12:06:44

+0

$ i老兄的价值是多少... – Learner 2012-07-27 12:07:14

回答

7

打开您的变量,在这种情况下$row['CatID']

switch ($row['CatID']){ 
    case 1: 
     $i = "kunder"; 
     break; 
    case 2: 
     $i = "bokningar"; 
     break; 
    ... 
+1

这是海报几乎可以肯定要实现的东西。 – Peter 2012-07-27 12:38:50

2

它看起来像$i从不设置,所以switch()语句默认为(令人惊讶的)默认子句。

将您的代码更改为像这样;

 switch ($row['CatID']){ 
      case 1: 
       $yourVar = "kunder"; 
       break; 
     } 

switch语句查看当前变量。如果该变量恰好是来自数据库的列,则需要评估,即特定变量。

如果您在交换机之前为$row['catID']中的数据分配了变量$i,那么您的代码就可以工作。

+0

+1我认为OP对'switch'的工作方式有着不好的理解。 '$ row [CatID] = 1'是一个变量赋值,没什么意义...... – feeela 2012-07-27 12:08:55

0
switch($row['CatID']) 

然后用例1 :,情况下2:等

+0

至少有礼貌给出downvote的理由 – asprin 2012-07-27 14:03:47

1

只是一个猜测

switch ($row['CatID']) { 
    case 1: 
    $i = "kunder"; 
    break; 
    // And so on 
} 
  • $i从未定义
  • $row[CatID]应触发通知,因为你忘了'
  • $row[CatID]=2设定值,这并没有太大的意义在上下文中