私はこれを理解しようとしてきました、そして私は絶望的に立ち往生しています。MySQLデータベースにtypeという名前の列があります。すべて1が含まれています。以下の関数$row[type]では、whileループで常に2が返されますが、その理由がわかりません。
私より賢い人が、どんな状況で起こり得るかを説明できますか?データベースでは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;
}