Php 如何使用两个同名表单字段,但仅使用填写的表单字段将数据插入mysql?
我有这个html:Php 如何使用两个同名表单字段,但仅使用填写的表单字段将数据插入mysql?,php,mysql,Php,Mysql,我有这个html: <p> <strong>category:</strong> <input type="text" name="categorytext"> <select name="categoryselect"> <option value="">-select-</option> <option value="Paper">Paper</option> <
<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>
我想在那一行之前放一些东西,让php知道使用哪个值
比如:
if ($_POST["categorytext"] == "") {
$category = $_POST["categoryselect"];
} else {
$category = $_POST["categorytext"];
}
这样行吗?有更好的办法吗
编辑:
如果我想使用变量,我想我需要更改插入行。将开展以下工作:
INSERT INTO inventory_vendors (category) VALUES ('" . $category . "')
编辑#2:
如果有人试图键入文本并同时选择一个选项,我该怎么办
编辑#3:
逃跑是怎么做的?我在代码中的什么地方更新它以包含转义?您提供的代码应该可以工作,但要注意安全问题 您还可以使用JavaScript检查字段值并填写隐藏的“category”字段,该字段将与表单一起发布 通常,您不应该像以前那样在文本查询中直接使用发布的数据。您可以使用SQL代码填写表单,并进行所谓的SQL注入
示例:如果我用名为“”)的类别填写您的表格;截断表库存_供应商;选择('1“=>我只是删除整个表。始终转义传入数据并限制SQL用户的权限。最佳做法是使用ORM或框架来处理查询。您可以使用
empty()
if(!empty($\u POST['categorytext']){…}而不是检查它是否为空字符串
。并且您的插入查询易受SQL注入攻击。在将用户输入插入数据库之前,您需要正确转义用户输入。^--«我打算提出同样的建议。但是,您的问题标题与正文不匹配。在标题中,您会问“如何使用两个同名表单字段?”,但在您提供的代码中,名称
属性是不同的。我不知道您到底混淆了什么。根据编辑#3,如果您使用的是mysqli*
函数,我们不知道您使用的是哪个API或DB连接变量,请执行$category=mysqli\u real\u escape\u string($con,$\u POST[“categoryselect”]));
@leoarce或使用事先准备好的语句/PDO。谢谢大家。所有建议的结合帮助我解决了这个问题。
INSERT INTO inventory_vendors (category) VALUES ('" . $category . "')