PHP类 - 将变量发送到INSERT QUERY

时间:2012-06-21 17:30:02

标签: php jquery

我需要一些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等的$变量。我只是POSTING文件,最终成为输入中的原始选定文件。

这是选择文件的表单。

<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>

1 个答案:

答案 0 :(得分:1)

在不知道albumBack.php的内容的情况下,很难确定您将看到的行为。但我们假设albumBack.php在某个时刻调用了upcount_name($name)

然后会发生preg_replace_callback的调用。此函数专门采用字符串和正则表达式,以及附加的“回调”函数。它在字符串上运行正则表达式并获取一组匹配,然后传递给回调函数。回调允许您以灵活的方式“注入”行为:在这种情况下,回调是一种定义每个正则表达式匹配的替换字符串的方式。

此处调用upcount_name_callback函数。要了解它的作用,您必须了解正则表达式。这有点复杂,但基本上它正在寻找一些数字([\d]+部分),一个.后面跟一行结束。 upcount_name_callback将此值作为一个数字,它递增一个扩展名,如果它存在则返回原样,如果不存在,则返回空字符串。

结果是,这似乎将'blah.jpg'改为'blah1.jpg'而'blah1.jpg'改为'blah2.jpg'。但是,看起来你回来的名字是否相同,它实际上并没有被执行。你需要发布来自albumBack.php的调用代码行来确认这一点。