所以,我想上传一个文件并选择(例如)" Value 1"来自select标签。然后当我单击发布按钮时,我想从脚本中检查我是否选择了值1,如果我选择了,那么我想将文件(" file_name")放在列#34; columndb&#中34;,如果我选择了值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);
}
}
?>
答案 0 :(得分:0)
选项不应包含名称,也不应包含值。 所以你要验证如下:
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')";
}
答案 1 :(得分:0)
如果$ select_tag正确保持&#39;值&#39;您选择的作为列名,那么以下内容应该是合适的:
$insert_db = "insert into mydb (`$select_tag`) values ('$filename')";
但请注意,使用表单中的值作为列名称在安全方面非常糟糕。有人恶意可以手动提交一个值,该值会导致数据被放入另一个字段,或者执行sql注入(因为在执行SQL查询之前你没有转义$ select_tag或$ filename。
如果&#39;如果&#39;你会更好。语句或“开关”,根据预定义的值集选择列。
示例:
$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);
答案 2 :(得分:-1)
if ($_POST['select_tag'] == 'Something') {
我认为这就是你想要的