好的。所以我有一個應該得到用戶信息的表單,包括應該存儲在數組中以允許多個選擇的種族信息,但是它也應該是可選的,以便沒有人有義務做出任何選擇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