HTML5 多文件上传。 Return lastinsertid 通过 jQuery AJAX 和 PHP?
HTML5 Multiple File Upload. Return lastinsertid through jQuery AJAX and PHP?
我有一个 html 多文件上传:
<input type="file" multiple="multiple">
我正在成功上传文件并写入我的数据库 table:
jQuery
function uploadFile() {
//some other stuff done here...
var ajaxRequest =
$.ajax({
url: '../inc/ajax-upload.php',
type: 'POST',
cache: false,
processData: false, // important
contentType: false, // important
data: formData,
});
ajaxRequest.done(function(data) {
console.log(data);
lastid = 'this comes from data';
$.each(files, function(i, file) {
$('div#files').append('<div class="file-name" id="'+ file['name'] +'">'+file['name']+'<button class="file-delete" id="' + lastid +'">delete</button>');
});
})
ajaxRequest.fail(function(jqXHR) { console.log(jqXHR); })
}
php
//CRUD stuff in another file
function pdoInsert($sql, $args) {
$pdo = dbConnect();
$stmt = $pdo->prepare($sql);
$stmt->execute($args);
echo $pdo->lastInsertId();
}
function addFile($filename){
$sql = 'INSERT INTO tbl_files (filename) VALUES (?)';
$args = array($filename);
echo pdoInsert($sql, $args);
}
//ajax.php file
$lastid = array();
foreach($_FILES as $file) {
//do filesystem stuff
//insert to db, get last insert id
$lastid[] = addFile($filename);
}
echo json_encode($lastid);
我希望我的 PHP 中的 $lastid
采用 JSON 格式,但是,它返回插入 ID 的连接字符串,例如123124[null,null]
或类似的东西。这里可能有什么问题?
如果您想将该值传递回调用者,则必须 RETURN 来自函数的信息。
所以将这两个函数都更改为 return 一个值而不是回显它。
//CRUD stuff in another file
function pdoInsert($sql, $args) {
$pdo = dbConnect();
$stmt = $pdo->prepare($sql);
$stmt->execute($args);
//echo $pdo->lastInsertId();
return $pdo->lastInsertId();
}
function addFile($filename){
$sql = 'INSERT INTO tbl_files (filename) VALUES (?)';
$args = array($filename);
//echo pdoInsert($sql, $args);
return pdoInsert($sql, $args);
}
我有一个 html 多文件上传:
<input type="file" multiple="multiple">
我正在成功上传文件并写入我的数据库 table:
jQuery
function uploadFile() {
//some other stuff done here...
var ajaxRequest =
$.ajax({
url: '../inc/ajax-upload.php',
type: 'POST',
cache: false,
processData: false, // important
contentType: false, // important
data: formData,
});
ajaxRequest.done(function(data) {
console.log(data);
lastid = 'this comes from data';
$.each(files, function(i, file) {
$('div#files').append('<div class="file-name" id="'+ file['name'] +'">'+file['name']+'<button class="file-delete" id="' + lastid +'">delete</button>');
});
})
ajaxRequest.fail(function(jqXHR) { console.log(jqXHR); })
}
php
//CRUD stuff in another file
function pdoInsert($sql, $args) {
$pdo = dbConnect();
$stmt = $pdo->prepare($sql);
$stmt->execute($args);
echo $pdo->lastInsertId();
}
function addFile($filename){
$sql = 'INSERT INTO tbl_files (filename) VALUES (?)';
$args = array($filename);
echo pdoInsert($sql, $args);
}
//ajax.php file
$lastid = array();
foreach($_FILES as $file) {
//do filesystem stuff
//insert to db, get last insert id
$lastid[] = addFile($filename);
}
echo json_encode($lastid);
我希望我的 PHP 中的 $lastid
采用 JSON 格式,但是,它返回插入 ID 的连接字符串,例如123124[null,null]
或类似的东西。这里可能有什么问题?
如果您想将该值传递回调用者,则必须 RETURN 来自函数的信息。
所以将这两个函数都更改为 return 一个值而不是回显它。
//CRUD stuff in another file
function pdoInsert($sql, $args) {
$pdo = dbConnect();
$stmt = $pdo->prepare($sql);
$stmt->execute($args);
//echo $pdo->lastInsertId();
return $pdo->lastInsertId();
}
function addFile($filename){
$sql = 'INSERT INTO tbl_files (filename) VALUES (?)';
$args = array($filename);
//echo pdoInsert($sql, $args);
return pdoInsert($sql, $args);
}