簡體   English   中英

通過准備好的語句將 PHP 枚舉插入 SQL 數據庫

[英]Inserting a PHP enum into a SQL database through a prepared statement

我目前有一個准備好的語句,它將 HTML 表單中的數據通過准備好的語句 (PHP) 放入 SQL 數據庫中。

這里的問題; 一個字段在放入數據庫后仍然為空。 'gender' 字段,它是一個 ENUM(M,F,O)。 rest 填滿了正確的數據。

我有什么辦法可以將性別與其他數據一起放入表格中?

相關的 HTML:

    <input type="radio" id="man" name="gender" value="man">
    <label for="man">Man</label>

    <input type="radio" id="woman" name="gender" value="woman">
    <label for="woman">Woman</label>

    <input type="radio" id="other" name="gender" value="other">
    <label for="other">Other</label>

PHP:

$firstname= htmlentities($_POST['firstname'], ENT_QUOTES);
$lastname= htmlentities($_POST['lastname'], ENT_QUOTES);
$gender=  htmlentities($_POST['gender'], ENT_QUOTES);
$birthdate= preg_replace("([^0-9-])", "", $_POST['birthday'], ENT_QUOTES);
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
$portfolio = filter_var($_POST['portfolio'], FILTER_SANITIZE_URL);

$query = "INSERT INTO `table` (`firstname`, `lastname`, `gender`, `birthdate`, `email`, `portfolio`)
VALUES (?, ?, ?, ?, ?, ?)";

mysqli_stmt_bind_param($stmt, "ssssss", $firstname, $lastname, $gender, $birthdate, $email, $portfolio);

mysqli_stmt_execute($stmt);
$prepstmt = mysqli_stmt_get_result($stmt);

更改單選按鈕的值以匹配 ENUM 值。

<input type="radio" id="man" name="gender" value="M">
<label for="man">Man</label>

<input type="radio" id="woman" name="gender" value="F">
<label for="woman">Woman</label>

<input type="radio" id="other" name="gender" value="O">
<label for="other">Other</label>

如果不能更改表格,可以 map PHP 中的值:

$gender_map = ['man' => 'M', 'woman' => 'F', 'other' => 'O'];
$gender = $gender_map[$_POST['gender']];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM