【问题标题】:Inserting a PHP enum into a SQL database through a prepared statement通过准备好的语句将 PHP 枚举插入 SQL 数据库
【发布时间】:2021-04-22 23:23:52
【问题描述】:

我目前有一个准备好的语句,它通过准备好的语句 (PHP) 将 HTML 表单中的数据放入 SQL 数据库。

这里的问题;一个字段在放入数据库后仍然为空。 'gender' 字段,它是一个 ENUM(M,F,O)。其余的则填充了正确的数据。

我有什么办法可以将性别与其他数据一起放入表格中?

相关的 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);

【问题讨论】:

  • 保存到数据库时不要使用htmlentities()。这应该只在网页上显示文本时使用。
  • 您尝试过什么解决问题的方法?你被困在哪里了?您是否检查过您是否发送了正确数据?

标签: php html mysql enums


【解决方案1】:

更改单选按钮的值以匹配 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>

如果不能更改表单,可以在 PHP 中映射值:

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

【讨论】:

    猜你喜欢
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    相关资源
    最近更新 更多