PHP类-发送变量以插入查询

PHP类-发送变量以插入查询,php,jquery,Php,Jquery,我需要一些PHP类的帮助。我对它的工作原理知之甚少,我正试图了解更多。同时,我遇到了一个问题,在变量在类中运行完这些函数之后,我需要获取变量 protected function upcount_name_callback($matches) { $index = isset($matches[1]) ? intval($matches[1]) + 1 : 1; $ext = isset($matches[2]) ? $matches[2] : '';

我需要一些PHP类的帮助。我对它的工作原理知之甚少,我正试图了解更多。同时,我遇到了一个问题,在变量在类中运行完这些函数之后,我需要获取变量

protected function upcount_name_callback($matches) {
        $index = isset($matches[1]) ? intval($matches[1]) + 1 : 1;
        $ext = isset($matches[2]) ? $matches[2] : '';
        return ' ('.$index.')'.$ext;
    }

    protected function upcount_name($name) {
        return preg_replace_callback(
            '/(?:(?: \(([\d]+)\))?(\.[^.]+))?$/',
            array($this, 'upcount_name_callback'),
            $name,
            1
        );
    }
我需要在下面的JS语句中检索这个变量,并发送到我的INSERT php文件

$('#albumBack.fileupload').bind('fileuploaddone',function(e,data) {

    //Loop through each page and return object and write to DB
    $.each(data.files, function (index, file) {
        var filename = file.name;
        $.ajax({ 
            type: "POST",
            url: "../albumUploader/queries/albumPages.php",
            data: {file: filename}
        });
    });
});
当前获取的文件名是原始名称,而不是附加名称。 谢谢你在这方面的帮助

albumPages.php

//Variables for gallerimage table
    $originalName = $_POST['file'];
    $clientRef = $_SESSION['clientRef'];
    $galleryID = $_SESSION['newGalleryId'];
    $galleryLayout = $_SESSION['layoutID'];
    $imageID = rand();

    //Find the sort# for the gallery
    $qSortOrder = mysql_query("SELECT MAX(sort) AS sortOrder
                                    ,id
                                    ,clientRef
                                    ,galleryId
                                    FROM galleryimage
                                    WHERE galleryId='{$galleryID}' 
                                    AND clientRef= '{$clientRef}'
                                    ");
    $fsortOrder = mysql_fetch_array($qSortOrder);
    //Latest revision
    $orderNumber = $fsortOrder['sortOrder'];
    $order = $orderNumber + 1;

    $query = "INSERT INTO galleryimage 
            (
                galleryId
                ,image
                ,OrgImageName
                ,clientRef
                ,sort
                ,layout
            ) VALUES (
                '{$galleryID}'
                ,'{$imageID}'
                ,'{$originalName}'
                ,'{$clientRef}'
                ,'{$order}'
                ,'{$galleryLayout}'
            )";
    $return = mysql_query($query);
$originalName是我需要定义为img.jpg、$img(1).jpg等的$variable。我只是发布文件,它最终是从输入中选择的原始文件

这是选择文件的表单


选择返回

如果不知道albumBack.php的内容,就很难准确确定您将看到的行为。但是让我们假设albumBack.php在某个时候调用了
upcount\u name($name)

然后发生的就是所谓的。此函数专门接受一个字符串和一个正则表达式,以及一个附加的“回调”函数。它在字符串上运行regex并获取一组匹配项,然后将这些匹配项传递给回调函数。回调允许您以灵活的方式“注入”行为:在本例中,回调是定义每个正则表达式匹配的替换字符串的一种方式

这里调用的是
upcount\u name\u回调
函数。要理解它是什么,您必须理解正则表达式。这有点复杂,但本质上它是在寻找一些数字(
[\d]+
部分),一个
后跟一行末尾
upcount\u name\u callback
将其作为一个数字(递增)和一个扩展名(如果存在则返回原样),如果不存在则返回空字符串


结果是,这似乎将“blah.jpg”更改为“blah1.jpg”,将“blah1.jpg”更改为“blah2.jpg”。但是,如果您要返回的名称是相同的,那么它实际上并没有被执行。您需要发布albumBack.php中的调用行代码来确认这一点。

这是您正在使用的全部脚本吗?js还是php类?php类还有更多内容。至于js,是的,这是所有的脚本,我将编辑完整的作为旁白;您应该真正使用PHPPDO:您当前容易受到SQL注入攻击。您是对的!计划在我解决上传过程后尽快解决这个问题。谢谢编辑了我的代码,谢谢@Nathaniel Ford-我现在将仔细查看您的答案。此外,正在写入服务器的文件将被写入blah(1).jpg,blah(2).jpg等…我只需要能够检索该名称并将其发送到albumPages.phpYes;我忽略了正则表达式中的括号,因为重点是增加数字。当您说“检索该名称并将其发送到albumPages.php”时,不清楚您的意思。albumPages.php中的代码片段与您发布的其他代码不交互?编辑问题以显示表单。albumPages.php中的$_POST['file']为我提供了原始文件名,而不是附加的文件名。我需要弄清楚如何获得$originalName='[附加文件名]'您知道更改名称的两个函数都是在php中,对吗?你必须从albumPages.php调用它们?在您获得
$originalName
后,立即尝试
$appendedName=upcount($originalName)并回显。
<form class="fileupload" id="albumBack" action="../js/jQuery-file-upload/server/php/" method="POST" enctype="multipart/form-data" >
                <!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload -->
                <div class="row fileupload-buttonbar">
                        <span class="btn btn-success fileinput-button">
                            <span>Choose Back</span>
                            <input type="file" name="files[]">
                        </span>
                    </div>