好的。所以我有一个应该得到用户信息的表单,包括应该存储在数组中以允许多个选择的种族信息,但是它也应该是可选的,以便没有人有义务做出任何选择PHP:ARRAY中的NULL值作为字符串存储在表中
输入页面 人种(选择所有适用):
<input type="checkbox" name="ethnicity[]" value="Indian"> American Indian or Alaska Native<br>
<input type="checkbox" name="ethnicity[]" value="Asian"> Asian<br>
<input type="checkbox" name="ethnicity[]" value="African-American"> Black or African-American<br>
<input type="checkbox" name="ethnicity[]" value="Pacific"> Native Hawaiian or other Pacific Islander<br>
<input type="checkbox" name="ethnicity[]" value="White"> White<br>
我的过程数据页一切
然后存储到变量
$email = filter_input (INPUT_POST, 'email');
$passwordUser = filter_input (INPUT_POST, 'passwordUser');
$phone = filter_input (INPUT_POST, 'phone');
$sex = filter_input (INPUT_POST, 'sex');
if ($sex == NULL) {
$sex = 'unknown';
}
$age = filter_input (INPUT_POST, 'age');
$state = filter_input (INPUT_POST, 'state');
$ethnicity = filter_input (INPUT_POST, 'ethnicity', FILTER_SANITIZE_SPECIAL_CHARS, FILTER_REQUIRE_ARRAY);
if ($ethnicity !== NULL) {
} else {
'No answer selected.';
}
include 'insertData.php';
和所有的insertData页信息将被插入到表格中。
include 'database.php';
try {
$query = "INSERT INTO accounts
(ageGroup, emailAddress, gender, password, phoneNumber, stateAbbr)
VALUES
(:ageGroup, :emailAddress, :gender, :passwordUser, :phoneNumber, :stateAbbr)";
$statement = $db->prepare($query);
$statement->bindValue(':ageGroup', $age);
$statement->bindValue(':emailAddress', $email);
$statement->bindValue(':gender', $sex);
$statement->bindValue(':passwordUser', $passwordUser);
$statement->bindValue(':phoneNumber', $phone);
$statement->bindValue(':stateAbbr', $state);
$statement->execute();
$statement->closeCursor();
foreach ($ethnicity as $result) {
$query = "INSERT INTO customerethnicity
(emailAddress, ethnicity)
VALUES
(:emailAddress, :ethnicity)";
$statement = $db->prepare($query);
$statement->bindValue(':ethnicity', $result);
$statement->bindValue(':emailAddress', $email);
$statement->
execute();
$statement->closeCursor();
}
echo "Account created successfully!";
} catch (PDOException $e) { //Catches and handles db errors to prevent site crash
$title = 'Error';
$caption = 'System message:';
$message = $e->getMessage() . '<br><br> An error has occurred. Please check the information entered and try again.';
include 'Database_error.php';
数据库使用的电子邮件和电子邮件和种族上专门针对种族设计了表一起创建新行链接两个表。另一个表存储其余的信息。一切都基本正常。我可以将性别空白并在表中存储“未知”,但是我不能将种族框未选中并在表中插入类似“未知”值而不是NULL,但不会收到此消息:
警告:在C的foreach()提供参数无效:\ XAMPP \ htdocs中\ FORMDATA \ insertData.php上线26
Account created successfully!
这是在线路26:foreach ($ethnicity as $result) {
成功创建的帐户测试仪消息弹出p,如果我在表格中查看,我可以看到输入的所有其他信息显示在帐户表中,但没有显示在客户关系表中。如果我填写信息,或者即使我留下其他值为空,并且只选择一个或多个种族,那么一切正常。问题是没有选择任何种族。我需要有一个值表示没有选择任何东西。
问题:如果只选择了一个种族:它仍然是一个数组吗? – Thomas
如果仅选择1,则它会在customerethnicity表中正确显示,并且电子邮件和一个选择都出现在同一行中。如果有多个选择,那么有多个行共享相同的电子邮件。问题在于,如果没有选择,所有东西仍然运行,但我收到警告消息,并且在该表中没有任何类型的输入。另一个很好。 – Kr4ckl3s