首页 > 解决方案 > 如何使用 PHP 和 Mysql 将数组从表单转换为数据库

问题描述

我在弄清楚如何从输入字段中获取我的数组时遇到了一些麻烦。所以什么有效,我让我的数组显示我选择了哪些我的问题是,当我将 $selagegroup 添加到 sql INSERT 中时,它只显示最后一个被检查的而不是所有被检查的。我对 sql 和 php 还是有点陌生​​,所以任何帮助将不胜感激这里是我的 HTML 和 PHP 代码

<label for="agegroup" id="agegroup"> What ages do you interact with?
<input type="checkbox" name="age[]" class="ages" id="kids" value="kids"> Ages 0-10
        <input type="checkbox" name="age[]" class="ages" id="teens" value="teens"> Ages 11-19
        <input type="checkbox" name="age[]" class="ages" id="twentys" value="twenties"> Ages 20-29
        <input type="checkbox" name="age[]" class="ages" id="thirtys" value="thirties"> Ages 30-39
        <input type="checkbox" name="age[]" class="ages" id="fourtys" value="fourties"> Ages 40-49
        <input type="checkbox" name="age[]" class="ages" id="fiftys" value="fifties"> Ages 50-59
        <input type="checkbox" name="age[]" class="ages" id="sixtyplus" value="sixtyplus"> Ages 60+
</label>

这是我用来显示数组的php:

if (isset($_POST['age']) && $_POST['age'] !== '') {

    $vagegroup = $_POST['age'];

    foreach($_POST['age'] as $selagegroup){
        echo $selagegroup.'<br>';
    }
} else {
    $vagegroup = '';
} 

我还尝试将 foreach 循环添加到 sql 插入中,但对于复选框中的每个字段,它只显示“”,“”,“”,我不知道该怎么做任何帮助将不胜感激,即使当我只是回显它工作的数组并显示检查的所有内容。如果有人可以解释和帮助谢谢:)

已编辑 :::我忘了添加这个我的插入语句总体上有 30 个不同的字段,因为这是一个长表单,但这是我为年龄组所做的,它只显示最后选择的值

$sql_insert = "INSERT INTO influencers (inf_ages) VALUES ('$selagegroup')";

标签: phpmysqlsqldatabase

解决方案


如果您期望响应数组,则可以在将数据保存到数据库之前对数据进行序列化或 json_encode,前提是 db 列的长度至少为 VARCHAR

我还建议检查它是否是一个数组并确认您正在检索您想要的输入(始终验证!),然后简单地通过上述方法之一而不是循环创建一个字符串 - 这比序列化或编码。


推荐阅读