HTML select TAG 到 mysql
HTML select TAG into mysql
所以,我想上传一个文件并从 select 标签中选择(例如)"Value 1"。然后当我单击“发布”按钮时,我想从脚本中检查我是否 selected 值 1,如果我这样做了,那么我想将文件 ("file_name") 放在 [=18= 列中],如果我 selected Value 2 我想把它放在其他列等等。
<div><input type="file" name="file_name">
<div><input type="file" name="inputname">
<select id="select_id" name="select_name">
<option value="null">None</option>
<option value="value1" name="value1name">Value 1</option>
<option value="value2" name="value2name">Value 2</option>
</select></div>
<div>
<div><input type="submit" name="submit" value="Publish"></div>
</div>
<?php
if(isset($_POST['submit'])){
$filename = $_FILES['file_name']['name'];
$filename_tmp = $_FILES['file_name']['tmp_name'];
$select_tag = $_POST['select_name'];
move_uploaded_file($filename_tmp, "somewhere/$filename");
if($select_tag == 'value1name'){
$insert_db = "insert into mydb ('columndb') values ('$filename')";
$run_db = mysqli_query($db, $insert_db, MYSQLI_STORE_RESULT);
}
}
?>
if ($_POST['select_tag'] == 'Something') {
我想这就是你想要的
选项不应该有名称,只有值。
所以你会验证如下:
if($select_tag == "value1")
{
//...
//You're also using apostrophes in the query, on the column name, which is wrong.
//Change to this:
$insert_db = "insert into mydb (`columndb`) values ('$filename')";
}
如果 $select_tag 正确地将您选择的 'value' 作为列名,那么以下应该是合适的:
$insert_db = "insert into mydb (`$select_tag`) values ('$filename')";
请注意,使用表单中的值作为列名在安全方面非常糟糕。恶意的人可能会手动提交一个值,导致数据被放入另一个字段,或者执行 sql 注入(因为在执行 SQL 之前你没有转义 $select_tag 或 $filename查询。
你最好有一个 'if' 语句块,或者 'switch',它根据一组预定义的值选择一个列。
示例:
$target_column = ""; // input column
switch($select_tag) {
case "column1":
$target_column = "columndb";
break;
case "column2":
$target_column = "anothercolumn";
break;
default:
$target_column = "column1";
break;
}
$filename = mysql_escape_string($filename); // mysql_escape_string is deprecated in later php versions... Use an alternative like mysqli_real_escape_string()
$insert_db = "insert into mydb (`$target_column`) values ('$filename')";
$run_db = mysqli_query($db, $insert_db, MYSQLI_STORE_RESULT);
所以,我想上传一个文件并从 select 标签中选择(例如)"Value 1"。然后当我单击“发布”按钮时,我想从脚本中检查我是否 selected 值 1,如果我这样做了,那么我想将文件 ("file_name") 放在 [=18= 列中],如果我 selected Value 2 我想把它放在其他列等等。
<div><input type="file" name="file_name">
<div><input type="file" name="inputname">
<select id="select_id" name="select_name">
<option value="null">None</option>
<option value="value1" name="value1name">Value 1</option>
<option value="value2" name="value2name">Value 2</option>
</select></div>
<div>
<div><input type="submit" name="submit" value="Publish"></div>
</div>
<?php
if(isset($_POST['submit'])){
$filename = $_FILES['file_name']['name'];
$filename_tmp = $_FILES['file_name']['tmp_name'];
$select_tag = $_POST['select_name'];
move_uploaded_file($filename_tmp, "somewhere/$filename");
if($select_tag == 'value1name'){
$insert_db = "insert into mydb ('columndb') values ('$filename')";
$run_db = mysqli_query($db, $insert_db, MYSQLI_STORE_RESULT);
}
}
?>
if ($_POST['select_tag'] == 'Something') {
我想这就是你想要的
选项不应该有名称,只有值。 所以你会验证如下:
if($select_tag == "value1")
{
//...
//You're also using apostrophes in the query, on the column name, which is wrong.
//Change to this:
$insert_db = "insert into mydb (`columndb`) values ('$filename')";
}
如果 $select_tag 正确地将您选择的 'value' 作为列名,那么以下应该是合适的:
$insert_db = "insert into mydb (`$select_tag`) values ('$filename')";
请注意,使用表单中的值作为列名在安全方面非常糟糕。恶意的人可能会手动提交一个值,导致数据被放入另一个字段,或者执行 sql 注入(因为在执行 SQL 之前你没有转义 $select_tag 或 $filename查询。
你最好有一个 'if' 语句块,或者 'switch',它根据一组预定义的值选择一个列。
示例:
$target_column = ""; // input column
switch($select_tag) {
case "column1":
$target_column = "columndb";
break;
case "column2":
$target_column = "anothercolumn";
break;
default:
$target_column = "column1";
break;
}
$filename = mysql_escape_string($filename); // mysql_escape_string is deprecated in later php versions... Use an alternative like mysqli_real_escape_string()
$insert_db = "insert into mydb (`$target_column`) values ('$filename')";
$run_db = mysqli_query($db, $insert_db, MYSQLI_STORE_RESULT);