我有一个内部网站,我正在开发工作。我不是一个Web开发人员,但知道足以完成一些基本功能。我有一个表单可以正常插入数据。不过,我试图找出最后一篇文章。
该页面旨在向我们的网站添加作业。每个职位都分配了职责。使这项工作(在我的大脑中)最简单的方法是创建一个责任表,其中包含责任ID,职责ID,然后是责任。在完成新职位的表单时,我想要一种批量添加这些职责的方法。类似于在使用MySQL工作台时添加新字段的方法 - 您可以在其中单击下一行并添加该字段。那会很棒。
我不确定除了添加多个项目之外甚至还要搜索什么来实现这一目标 - 这还没有找到我正在寻找的东西。
提前致谢!
答案 0 :(得分:2)
大多数时候,这里的人都喜欢看你尝试过的东西。
这个问题被问到here。
示例MySQL语句:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
如果需要,您可以使用PHP变量替换值。只要确保它们是字符串,它们就是'引号'。
答案 1 :(得分:1)
如果您的表单允许您同时提交多个职责,那么我会使用PDO。记住PDO是你的朋友,在插入之前总是清理你的输入。这是最基本的版本,您可能希望用下拉菜单或文本区域替换输入。
表格强>
responsibilityID|PositionID|responsibility
responsID应为PK并自动增加
<强> HTML 强>
<form>
<div>
<h1>job</h1>
<label>PositionID</label><input name='jobs[][positionID]' />
<label>responsability</label><input name='jobs[][responsibility]' />
</div>
<div>
<h1>job</h1>
<label>PositionID</label><input name='jobs[][positionID]' />
<label>responsability</label><input name='jobs[][responsibility]' />
</div>
<div>
<h1>job</h1>
<label>PositionID</label><input name='jobs[][positionID]' />
<label>responsability</label><input name='jobs[][responsibility]' />
</div>
<div>
<h1>job</h1>
<label>PositionID</label><input name='jobs[][positionID]' />
<label>responsability</label><input name='jobs[][responsibility]' />
</div>
<input type='submit' />
</form>
<强>基本强>
创建一个insert语句,然后遍历你的作业,将每个值绑定到语句并执行它们。
$insert_sql = "INSERT INTO responsibilities (`PositionID`, `responsibility`) VALUES (:PositionID, :responsibility);";
$stmt = PDO::Prepare($insert_sql)
foreach ($jobs as $job){
//add some input testing before you execute to make sure you are not inserting bad values
$stmt->bindValue(":positionID", $job['positionID'], PDO::PARAM_INT);
$stmt->bindValue(":responsibility", $job['responsibility'], PDO::PARAM_STR);
$stmt->execute();
}
查询中的:fieldname
告诉PDO需要用绑定函数替换什么,然后bindValue / bindParam函数告诉在查询中插入什么内容并正确转义值以便插入它。较旧的sql函数允许未转义或不正确转义的值,并且您获得了little bobby tables problem。 PDO可以保护您免受一些最严重的注入攻击,但您应该确保positionID指向一个真实的位置,或者该责任中没有奇怪的java脚本漏洞利用代码。
<强>花式强>
创建一个insert语句,绑定params,然后foreach循环完成你的职责,检查/清理输入(永远不要信任表单数据)然后执行语句。每次循环绑定参数都将指向新作业。
$insert_sql = "INSERT INTO responsibilities (`PositionID`, `responsibility`) VALUES (:PositionID, :responsibility);";
$job = array('positionID'=>NULL, 'responsibility'->NULL);
$stmt = PDO::Prepare($insert_sql)
$stmt->bindParam(":positionID", $job['positionID'], PDO::PARAM_INT);
$stmt->bindParam(":responsibility", $job['responsibility'], PDO::PARAM_STR);
foreach ($jobs as $job){
//add some input testing before you execute to make sure you are not inserting bad values
$stmt->execute();
}
答案 2 :(得分:0)
使用您想要具有多个值的输入,使用诸如职责[]之类的名称属性,然后将序列化数据插入数据库