はい/いいえ(値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なし)を試しただけで、すべてのビットフィールドに対して空の結果が得られました