-1

我一直在试图解决这个问题,但我陷入了绝望。我的 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;
}
4

1 回答 1

2

$row['type'] = "2"

=是赋值,你要==比较。当您点击该行时,将为变量分配值。

您还可以养成将文字放在首位的解决方法习惯:

"2" = $row['type']无效,因为您无法分配给文字,因此您会收到错误而不是意外行为。这提醒您使用==.

于 2012-11-19T04:10:35.560 回答