0

我在使用 PDO 将数据保存/更新到我的数据库时遇到问题。

此功能保存我的数据:

    function saveOrder($position,$id) {
    $sql = '
    UPDATE 
        '.DBPREFIX.'section_2 
    SET 
        order = ?
    WHERE 
        id = ?';
    $stmt = $this->db->prepare($sql);  
    $stmt->execute(array($position,$id));
    return var_dump($stmt->errorInfo());
}  

这是 sort_2.php:

$VAR_BACK = "../";
include($VAR_BACK."_config.php");
include($VAR_BACK."_config_db.php");
include($VAR_BACK."_functions.php");
include($VAR_BACK."_start.php");
include_once("../classes/helper.class.php");
$helper = new helper();

foreach ($_GET['item'] as $position => $item)
{
    $helper->saveOrder($position,$item);
}

这是在我的前端 php 文件中:

         <script>
// Return a helper with preserved width of cells
var fixHelper = function(e, ui) {
    ui.children().each(function() {
        $(this).width($(this).width());
    });
    return ui;
};

$(document).ready(function(){
    $("#sort tbody").sortable({
        helper: fixHelper,
        update : function () { 
                var data = $(this).sortable('serialize');
                //$('#info').text(data);
                $("#info").load("sort_2.php?"+data);
            } 
    }).disableSelection();
});

我总是收到这样的信息:

string(178) "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order = '2'
    WHERE 
        id = '1'' at line 4"  

第 4 行是:
order = ?

但我不知道这里可能出现什么错误。我试图转换为(int),我尝试了stripslashes,没有任何效果。

在 DB 中,列是:id = int(5) 和 order = varchar(10)

有什么建议么?谢谢。

4

1 回答 1

0

order是一个保留字。用反引号引用它:

$sql = '
UPDATE 
    '.DBPREFIX.'section_2 
SET 
    `order` = ?
WHERE 
    id = ?';
于 2013-08-21T17:23:56.430 回答