2012-11-19 84 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。我也會把這個問題投票結束,因爲它太局部化了,不可能在將來幫助其他任何人(我相信在這裏有很多問題都有同樣的問題)。它反映了整個社區對問題有用的問題,而不是問題或代碼的質量。 –