2012-11-19 56 views
-1

我一直想弄明白这一点,我绝望地卡住了。我在我的MySQL数据库中有一个名为type的列。它包含全部1。在下面的函数$row[type]总是在while循环中返回2,我只是不知道为什么。PHP/MySQL错误地返回变量

有人能比我更聪明地解释在什么情况下可能发生。我知道它在数据库中是1,但它在这里出现了2,我确定我错过了一些基本的东西,但我是新手,只是第一次尝试编写自己的函数。此功能中的其他一切都很好,只是不确定我要出错的地方。

function getQuestionsVendorForm($dbh, $hosp) 
{ 
    $sql1 = $dbh->prepare(' 
    SELECT COUNT(*) 
    FROM sub_questions 
    WHERE hospital_id = :hosp 
    '); 
    $sql1->bindValue('hosp', $hosp); 
    $sql1->execute(); 
    $num_rows = $sql1->fetchcolumn(); 
    $sql  = $dbh->prepare(' 
    SELECT * 
    FROM sub_questions 
    WHERE hospital_id = :hosp 
    '); 
    $sql->bindValue('hosp', $hosp); 
    $sql->execute(); 
    $question_table = ''; 
    if ($num_rows > 0) { 
     $isOdd = true; 
     while (($row = $sql->fetch(PDO::FETCH_ASSOC)) !== false) { 

      if ($isOdd) { 
       $question_table .= '<div>'; 
      } 
      if (!$isOdd) { 
       $question_table .= '<div>'; 
      } 
      $question_table .= "<label class='dontend'>${row[question]}</label>"; 
      if ($row['type'] = "2") { 
       $question_table .= "<input type='radio' name='quest_$row[question_id]' value='Yes'>Yes"; 
       $question_table .= "<input type='radio' name='quest_$row[question_id]' value='No'>No"; 
      } else { 
       $question_table .= "<textarea name='quest_$row[question_id]' rows='1' id=''></textarea>"; 
      } 
      $question_table .="$row[type]"; 
      $question_table .= '</div>'; 
      $isOdd = !$isOdd; 
     } 
     ; 
    } else { 
     $question_table = ''; 
     $question_table .= '<div>'; 
     $question_table .= 'No additional questions have been added by this hospital.'; 
     $question_table .= '</div>'; 
    } 
    ; 
    return $question_table; 
} 

回答

2

$row['type'] = "2"

=是分配,你要==进行比较。当你击中那条线时,变量被赋值。

您也可以在把字面第一的解决方法习性:

"2" = $row['type']是无效的,因为你不能分配到文字,所以你得到一个错误,而不是意外的行为。这提醒您使用==

+0

非常感谢!真的,这是一个倒退?我认为这个网站是用于编码的帮助?对不起,如果我不是最好的程序员。试图变得更好。 –

+0

不要冒险downvote。我也会把这个问题投票结束,因为它太局部化了,不可能在将来帮助其他任何人(我相信在这里有很多问题都有同样的问题)。它反映了整个社区对问题有用的问题,而不是问题或代码的质量。 –