Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 选择在NAS而不是服务器上工作的数据库中的位值_Php_Mysql_Class_Object_Bit - Fatal编程技术网

Php 选择在NAS而不是服务器上工作的数据库中的位值

Php 选择在NAS而不是服务器上工作的数据库中的位值,php,mysql,class,object,bit,Php,Mysql,Class,Object,Bit,我有一些带有yes/no(值1/0)的组合框,我将它们作为一个位存储在数据库中。要将该值放入对象的正确成员中,我执行以下操作: class Member { var $active; public function refreshData() { $mysqli = connectdbMySQLI(); $query = "SELECT * FROM tblMember WHERE ID = " . $this->id;

我有一些带有yes/no(值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'];
    }
}
Alle varchars、int和text值或被赋值,但这些位值除外。 我检查了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>**
这(所有结果均为0):

编辑2:


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

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条件

所以存储为int而不是bit。Thx,但是为什么我不能检索存储的值呢?(见编辑)
if(!$_POST['active']) {
    $_POST['active'] = 0;
}else{
   $_POST['active'] = 1;
}
<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>**