【问题标题】:Confused about storing data from this form对存储此表单中的数据感到困惑
【发布时间】:2025-11-24 08:30:01
【问题描述】:

我一直在练习mysql,然后遇到了一个我无法解决的问题。 我正在制作一个能够将用户信息存储在数据库中的大型表单。 我已经设法使用 mysql 和 php 从简单的表单字段(如姓名、国家、年龄、兴趣等)制作和存储数据。

我的数据库中有一个名为 users 的表,其中大约有 15 列用于不同的数据,例如姓名、国家、年龄等。

现在我已将这个 from 字段添加到我的 from 中,并且对如何存储该字段中的数据感到困惑。

这是我的表单的img ....

现在,如果我创建一个列emp_name,那么我将如何为每个用户存储 1-4 个值,每个用户有 5 个字段?

即使我创建了一个不同的表 ex - emp_history 那么如何为每个用户存储此表单中的数据?

【问题讨论】:

  • 我认为您正在寻找一对多的关系?

标签: php mysql database forms


【解决方案1】:

你的表格应该是这样的:

<form name="xyz" method="post"> <table> <tr> <td>Emp name</td><td>country</td><td>position</td> </tr> <tr> <td> <input type="text" name="data[emp_name][]" value="" /> <input type="text" name="data[country][]" value="" /> <input type="text" name="data[position][]" value="" /> </td> </tr> <tr> <td> <input type="text" name="data[emp_name][]" value="" /> <input type="text" name="data[country][]" value="" /> <input type="text" name="data[position][]" value="" /> </td> </tr> <tr> <td> <input type="text" name="data[emp_name][]" value="" /> <input type="text" name="data[country][]" value="" /> <input type="text" name="data[position][]" value="" /> </td> </tr> </table>

when you post the form, you will get the value in php file like this:

$arr = $_POST['data']; $cnt = count($arr['emp_name']);

for($i=0; $i<$cnt; $i++) {
    $name = $arr['emp_name'][$i];   
    $country = $arr['country'][$i];   
    $position = $arr['position'][$i];   
    // insert sql
    $sql = insert into emp_table(name, country, position) values('".$name."', '".$country."', '".$position."'); }

【讨论】:

  • 对于像我这样的初学者来说似乎很难......但是兄弟 skparwal 你有示例脚本吗,或者你能推荐任何我可以研究代码的表单处理器脚本吗?
  • 这很简单。您只需要以数组形式创建文本元素。例如
  • 查看此链接。可能这可以帮助你。 php easy step
  • 那么它会在一列中保存 1-4 个数据,例如emp_name,它在数据库行中会是什么样子?我只是有点困惑......或者你可以参考任何详细指南或文章来研究更多关于这种场景的信息......
  • php 简单步骤教程教授简单的输入和更新查询,但上表显示.....每个单独的用户将有单独的就业历史,将通过第 1-4 行和雇主名称(所有 4 个)将放在一个名为 emp_name 的列中。抱歉,它看起来有点复杂和混乱......:{
【解决方案2】:

创建两个表

tbl_more_detail(在这里你存储所有信息1-4)

id (PK)
emp_id
员工姓名
emp_country
emp_position
emp_from
emp_to

tbl_emp_detail (这里你参考上面的id,会有4行不同的detail_id)

id(PK)
emp_id
detail_id (FK 参考tbl_more_detail.id)

注意:为防止重复输入,请在 (emp_id, detail_id) 上创建 UNIQUE KEY INDEX

【讨论】:

  • 感谢 ans .. 那么 Employer's Name、Country、Position 等的文本字段将具有相同的名称和 id 吗?
  • 将所有数据保存在more_info 中,并在该表中添加emp_id
【解决方案3】:

首先创建一个数据库表:

create table emp_table {
    id int(10) auto_increment primary key,
    emp_name varchar(100),
    country varchar(50),
    position varchar(50)
}

现在创建一个包含以下代码的 php 文件:

<h2>Insert new records</h2>
<form name="emp" method="post">
<table border="1">
<tr>
    <td>Employee name</td>
    <td>Country</td>
    <td>Position</td>
</tr>
<tr>
    <td><input type="text" name="data[emp_name][]" value="" /></td>
    <td><input type="text" name="data[country][]" value="" /></td>
    <td><input type="text" name="data[position][]" value="" /></td>
</tr>
<tr>
    <td><input type="text" name="data[emp_name][]" value="" /></td>
    <td><input type="text" name="data[country][]" value="" /></td>
    <td><input type="text" name="data[position][]" value="" /></td>
</tr>
<tr>
    <td><input type="text" name="data[emp_name][]" value="" /></td>
    <td><input type="text" name="data[country][]" value="" /></td>
    <td><input type="text" name="data[position][]" value="" /></td>
</tr>
<tr>
    <td><input type="text" name="data[emp_name][]" value="" /></td>
    <td><input type="text" name="data[country][]" value="" /></td>
    <td><input type="text" name="data[position][]" value="" /></td>
</tr>
</table>
</form>

<?php
mysql_connect('localhost', 'dbuser', 'dbpassword');
mysql_select_db('db_name');

if(isset($_POST['data'])) {
    $cnt = $_POST['data']['emp_name'];

    for($i=0; $i<$cnt; $i++) {
        $name = $arr['emp_name'][$i];   
        $country = $arr['country'][$i];   
        $position = $arr['position'][$i];   
        // insert sql
        $sql = "insert into emp_table(name, country, position) values('".$name."', '".$country."', '".$position."')";
        mysql_query($sql);  
    }
}

?>
<br/><br/>
<h2>Existing Records</h2>
<table border="1">
<tr>
    <td>Employee name</td>
    <td>Country</td>
    <td>Position</td>
</tr>
<?php
$str = '';
$objQuery = mysql_query('select * from emp_table');
while($result = mysql_fetch_array($objQuery))  
{
    $str .= '<tr>';
    $str .= '<td>'.$result['emp_name'].'</td><td>'.$result['country'].'</td><td>'.$result['position'].'</td>';
    $str .= '</tr>';
}
echo $str;
?>
</table>

现在运行您的应用程序。您可以在同一页面上看到结果(带有现有记录)

【讨论】:

  • 非常感谢您提供详细的回答.. 您上次提交的代码几乎解决了当我添加表单操作和提交按钮到您的代码时它存储空白值的问题..