JTable PHP更新不工作

JTable PHP更新不工作,php,mysql,ajax,jquery-jtable,Php,Mysql,Ajax,Jquery Jtable,我下载了JTable PHP演示文件并修改了代码。我是这样做的 enter code here //Prepare jTable $('#PeopleTableContainer').jtable({ title: 'User Maintenance', actions: { listAction: 'PersonActions.php?action=list', cr

我下载了JTable PHP演示文件并修改了代码。我是这样做的

enter code here //Prepare jTable
        $('#PeopleTableContainer').jtable({
            title: 'User Maintenance',
            actions: {
                listAction: 'PersonActions.php?action=list',
                createAction: 'PersonActions.php?action=create',
                updateAction: 'PersonActions.php?action=update',
                deleteAction: 'PersonActions.php?action=delete'
            },
            fields: {
                strUsrName: {
                    key: true,
                    create: false,
                    edit: false,
                    list: true,
                    title: 'UserName'
                },
                strUsrFName: {
                    title: 'FirstName',
                    width: '10%'
                },
                strUsrMName: {
                    title: 'MiddleName',
                    width: '10%'
                },
                dtmUsrCreated: {
                    title: 'Record date',
                    width: '30%',
                    type: 'date',
                    create: false,
                    edit: false
                }
            }
        });
这是我的疑问

//Updating a record (updateAction)
else if($_GET["action"] == "update")
{
    //Update record in database
    $result = mysql_query("UPDATE tbluser SET strUsrFName = '" . $_POST["strUsrFName"] . "', strUsrMName = " . $_POST["strUsrMName"] . " WHERE strUsrName = " . $_POST["strUsrName"] . ";") or die('ERROR: '.mysql_error());

    //Return result to jTable
    $jTableResult = array();
    $jTableResult['Result'] = "OK";
    print json_encode($jTableResult);
}

我的主要问题是:当我卸下模具时,表会更新模具上的数据,但不会更新数据库中的数据,所以我猜错误在查询中,或者可能在主键中。有人能帮我吗?

您的查询写得不正确。您需要使用引号来确保将字符串值传递给非数字列。您的查询应如下所示:

$result = mysql_query("UPDATE tbluser SET strUsrFName = '" . $_POST["strUsrFName"] . "', strUsrMName = '" . $_POST["strUsrMName"] . "' WHERE strUsrName = '" . $_POST["strUsrName"] . "';") or die('ERROR: '.mysql_error());
正如我在评论中所说,不要再使用mysql\u查询了。它已被弃用并暴露于sql注入。 如果使用,则不再存在报价问题

$sql = "UPDATE tbluser SET strUsrFName = :strUsrFName, strUsrMName = :strUsrMName WHERE strUsrName = :strUsrName;";
$sth = $pdo->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(":strUsrFName" => $_POST["strUsrFName"], ":strUsrMName" => $_POST["strUsrMName"], ":strUsrName" => $_POST["strUsrName"]));

其他所有变量都需要引号,比如strUsrFName,因为它们是字符串。编辑:你不应该再使用mysql,使用mysqli或PDO。我不明白。你说我需要报价是什么意思?你能再解释一下吗?请看我的详细答案。谢谢。我刚切换到PDO,效果很好。起初,我试图切换到Mysqli,但它仍然不起作用,但当我切换到PDO时,我不知道,但它现在起作用了。谢谢。