繁体   English   中英

我怎样才能使用2个具有相同名称的表单字段,但仅使用填写的表单字段将数据插入mysql?

[英]how can i use 2 form fields with same name but use only the filled out one to insert data into mysql?

我有这个HTML:

<p>
<strong>category:</strong> 
<input type="text" name="categorytext"> 
<select name="categoryselect">
  <option value="">-select-</option>
  <option value="Paper">Paper</option>
  <option value="Envelopes">Envelopes</option>
  <option value="Mail Supplies">Mail Supplies</option>
  <option value="Software">Software</option>
  <option value="Labels">Labels</option>
  <option value="Misc">Misc</option>
</select>

然后,我想获取已填写的字段的值,并将其放入插入或更新查询中。 因此,如果填写了文本字段,则该值将进入表格的“类别”字段。 如果在下拉框中进行了选择,则该值将插入到表的“类别”字段中。

所以说这是我的插入行:

INSERT INTO inventory_vendors (category) VALUES ('" . $_POST["category"] . "')

我想在那行之前放一些东西,让php知道要使用哪个值。

就像是:

if ($_POST["categorytext"] == "") {
    $category = $_POST["categoryselect"];
} else {
    $category = $_POST["categorytext"];
}

这样的事情会起作用吗? 有没有更好的办法?

编辑:

我想如果我想使用变量,我将需要更改插入行。 将以下工作:

INSERT INTO inventory_vendors (category) VALUES ('" . $category . "')

编辑#2:

如果有人尝试同时键入文本并选择一个选项,该怎么办?

编辑#3:

转义如何完成? 我在代码中的哪儿更新它以包含转义?

您提供的代码应该可以工作,但是要注意安全问题。

您还可以使用JavaScript来检查字段值并填写隐藏的“类别”字段,该字段将与表单一起过帐。

通常,您不应该像在文本查询中那样直接使用POSTed数据。 可以用SQL代码填写表单并进行所谓的SQL注入。

示例:如果我使用名为“'的类别”填写您的表单;截断表stock_vendors;选择('1“ =>我只是删除整个表。请始终转义传入数据并限制SQL用户的权限。是使用ORM或框架来处理您的查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM