我用PHP编写了一个函数,该函数将上传信息发布到数据库表中。如果有人上传了文件,我会得到上传的日期时间和他的帐号,但是文件名有问题,因为允许用户上传多个文件。
fdatum is Datetime
fmandantnr is User Number
fdateiname is Name of the file
代码如下:
datensenden_copy.php
<?php
session_start();
require("../../require.php");
$omy= new clsMYSQL();
$output = '';
$fmandantnr=$_POST['fMandnr'];
for($i=0;$i<count($_FILES['userfiles']['name']);$i++) {
echo $_FILES['userfiles']['name'][$i];
$f1name= $_FILES['userfiles']['name'][$i];
}
$query = "INSERT INTO email_hochladen
(fmandantnr,fdatum,fdateiname)
VALUES (". $fmandantnr.",".$fdatum.",".$fdateiname.")";
echo $query;
$omy->Query($query);
?>
我做了研究,发现我需要得到这个:
for($i=0;$i<count($_FILES['userfiles']['name']);$i++){
echo $_FILES['userfiles']['name'][$i];
$f1name= $_FILES['userfiles']['name'][$i];
}
对此:
$query = "INSERT INTO email_hochladen
(fmandantnr,fdatum,fdateiname)
VALUES (". $fmandantnr.",".$fdatum.",".$fdateiname.")";
因为该代码无法在SQL语句中获取 fdateiname
谢谢你的时间。
答案 0 :(得分:2)
您正在遍历$ FILES数组并获取文件名,但是您的INSERT命令在循环之外,因此您只能对循环中最后一次出现的数据进行一次插入。因此,只需将插入物移动到循环内
在您的代码
$fdatum
中似乎没有定义任何地方,我希望/假设这只是您提供给我们的示例代码中的一部分,或者它可能是在require.php
代码中创建的< / p>
<?php
session_start();
require("../../require.php");
$omy= new clsMYSQL();
$output = '';
$fmandantnr=$_POST['fMandnr'];
for($i=0;$i<count($_FILES['userfiles']['name']);$i++) {
echo $_FILES['userfiles']['name'][$i];
$f1name= $_FILES['userfiles']['name'][$i];
$query = "INSERT INTO email_hochladen
(fmandantnr,fdatum,fdateiname)
VALUES (". $fmandantnr.",".$fdatum.",".$fdateiname.")";
$omy->Query($query);
}
?>
您的脚本向SQL Injection Attack开放 甚至if you are escaping inputs, its not safe! 在
MYSQLI_
或PDO
API中使用prepared parameterized statements由于我对您的
clsMYSQL();
一无所知,因此无法重新编码以正确使用准备好的语句。