Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用两个同名表单字段,但仅使用填写的表单字段将数据插入mysql?_Php_Mysql - Fatal编程技术网

Php 如何使用两个同名表单字段,但仅使用填写的表单字段将数据插入mysql?

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> <

我有这个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>
我想在那一行之前放一些东西,让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 . "')