0

我有一些带有是/否(值 1/0)的组合框,我将它们作为位存储在我的数据库中。为了将该值放入对象的正确成员中,我这样做:

class Member {
    var $active;

    public function refreshData() {
        $mysqli = connectdbMySQLI();

        $query = "SELECT * FROM tblMember WHERE ID = " . $this->id;
        $result = $mysqli->query($query);
        $row = $result->fetch_array(MYSQLI_ASSOC);
        $this->setData($row);
        $mysqli->close();
    }

    public function setData($row) {
        $this->active = $row['active'];
    }
}

所有 varchars、int 和 text-values 或被赋值,除了这些位值。我检查了 var_dump 并得到一个空字符串

["active"]=> string(1) "" 

保存也不起作用:

$member = new Member(isset($_POST['id']) ? $_POST['id'] : null );
if(isset($_POST['active'])) {
    $member->active = $_POST['active'];
$member->save();
}

我用来在组合框中选择正确的值:

<select type="text" name="active" id="active" class="txt">
    <option value="0" <?php echo $member->active == 0 ? 'selected="selected"' : ''; ?>>No</option>
    <option value="1" <?php echo $member->active == 1 ? 'selected="selected"' : ''; ?>>Yes</option>
</select>**

与本地 NAS 相比有何不同?

编辑:

我试过这个(所有结果都是1):

$this->active = $row['active'] == true ? '1' : '0';

这(所有结果都是0):

$this->active = $row['active'] == 1? '1' : '0';

编辑2:

刚刚尝试了一个简单的查询(没有 mysqli),我的所有位域都得到了一个空结果

4

1 回答 1

0

仅当您从活动下拉列表中选择值 1 时,以下条件才有效

if(isset($_POST['active'])) 

您需要将其替换为以下内容

if(!$_POST['active']) {
    $_POST['active'] = 0;
}else{
   $_POST['active'] = 1;
}

或解决方案 2

更新下拉列表中的以下值

<select type="text" name="active" id="active" class="txt">
    <option value="1" <?php echo $member->active == 1 ? 'selected="selected"' : ''; ?>>No</option>
    <option value="2" <?php echo $member->active == 2 ? 'selected="selected"' : ''; ?>>Yes</option>
</select>**

它不会绕过你的 if 条件。

于 2013-10-04T07:51:41.433 回答