在SQL数据库中存储android复选框状态


Storing android checkbox state in SQL database

我正在创建一个应用程序,允许用户注册他们的姓名,年龄等。我将所有这些信息存储在一个User类中,如下所示:

public class User {
String name, username, password, phoneNumber;
int age;
//constructor
public User(String _name, String _username, String _password, String _phoneNumber, int _age){
    name = _name;
    username = _username;
    password = _password;
    phoneNumber = _phoneNumber;
    age = _age;
}
}

我发送的数据到PHP脚本存储在SQL数据库。代码如下:

protected Void doInBackground(Void... params) {
            ArrayList<NameValuePair> dataToSend = new ArrayList<>();
            dataToSend.add(new BasicNameValuePair("name", user.name));
            dataToSend.add(new BasicNameValuePair("age", user.age + ""));
            dataToSend.add(new BasicNameValuePair("username", user.username));
            dataToSend.add(new BasicNameValuePair("password", user.password));
            dataToSend.add(new BasicNameValuePair("phoneNumber", user.phoneNumber));
        HttpParams httpRequestParams = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpRequestParams, CONNECTION_TIMEOUT);
        HttpConnectionParams.setSoTimeout(httpRequestParams, CONNECTION_TIMEOUT);
        HttpClient client = new DefaultHttpClient(httpRequestParams);
        HttpPost post = new HttpPost(SERVER_ADDRESS + "Register.php");
        try{
            post.setEntity(new UrlEncodedFormEntity(dataToSend));
            client.execute(post);
        }catch(Exception e){
            e.printStackTrace();
        }
        return null;
    }

现在我想创建大约10个复选框,它们的状态(已选中或未选中)我可以存储。我知道我可以创建一堆布尔值作为User类的一部分,但这似乎很麻烦,而且是不好的做法。因此,我的问题是,如何最好地将CheckBox数据存储在SQL数据库中?

作为参考,PHP脚本如下:
<?php
$con = mysqli_connect("localhost", "root", "", "is_clients");
$name = $_POST["name"];
$age = $_POST["age"];
$username = $_POST["username"];
$password = $_POST["password"];
$phoneNumber = $_POST["phoneNumber"];
$statement = mysqli_prepare($con, "INSERT INTO user (name, age, username, password, phoneNumber) VALUES (?, ?, ?, ?, ?) "); 
mysqli_stmt_bind_param($statement, "sisss", $name, $age, $username, $password, $phoneNumber);
mysqli_stmt_execute($statement);
mysqli_stmt_close($statement);
mysqli_close($con);
?>

你可以传递一个数组给PHP,数组中的每个元素可以是一个复选框值。在PHP中,你可以通过使用像checkBoxesArr[]这样的括号变量来实现这一点,这样你就可以使用相同的变量,并且每次出现都会成为数组中的另一个元素。

因此,在Java中(checkBoxXXXValue可以是二进制或布尔值):

dataToSend.add(new BasicNameValuePair("checkBoxArr[]", checkBoxOneValue));
dataToSend.add(new BasicNameValuePair("checkBoxArr[]", checkBoxTwoValue));
dataToSend.add(new BasicNameValuePair("checkBoxArr[]", checkBoxThreeValue));
PHP:

$checkBoxArr = $_POST['checkBoxArr'];
print_r($checkBoxArr);

这是你想要的吗?