我有一个文件验证过程,它通过 ajax 调用检查文件名是否已在数据库中。如果现有文件名.php 中只有 1 个文件名回显,则此方法有效,但我无法弄清楚如何循环返回数据以根据现有文件名.php 中的每个结果检查多个文件输入中的每个文件名环形。非常感谢任何建议。谢谢
var file = $('#file')[0];
$.get('existing-filenames.php', function(data){
for (var i=0; i<file.files.length; i++) {
var fname = file.files[i].name;
if(fname == data){
alert("these files already exist:" + data);
return false;
}
}
});
和'existing-filenames.php'中
$allfiles = $db->query("SELECT filename FROM files WHERE email = '$_SESSION[email]'");
while($result = $allfiles ->fetch_assoc()) {
echo $result['filename'];
}
最佳答案
在 PHP 文件中,您只是打印所有文件路径,不带空格或换行。
此外,您还应该为查询使用准备好的语句,包括 $_SESSION['email']
而不进行任何检查根本不安全。
顺便说一下,尝试像这样编辑你的 PHP 文件:
$allfiles = $db->query("SELECT filename FROM files WHERE email = '$_SESSION[email]'");
$fileList = array();
while($result = $allfiles ->fetch_assoc()) {
$fileList[] = $result['filename'];
}
echo json_encode($fileList);
你的 JS 代码是这样的:
$.get('existing-filenames.php', function(data){
for (var i=0; i<file.files.length; i++) {
var fname = file.files[i].name;
if(data.indexOf(fname) >= 0){
alert("these files already exist:" + data);
return false;
}
}
}, 'json');
未经测试,但应该可以工作
关于php - 根据多个文件输入检查现有文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15643038/