Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MySQL/PHP/jQuery-查询问题_Javascript_Php_Jquery_Mysql_Ajax - Fatal编程技术网

Javascript MySQL/PHP/jQuery-查询问题

Javascript MySQL/PHP/jQuery-查询问题,javascript,php,jquery,mysql,ajax,Javascript,Php,Jquery,Mysql,Ajax,我正在尝试创建一个用于更改名字/姓氏的用户面板 看起来$ajax表单处理做得很好,因为我可以console.logdata并查看{fname:Damian,lname:Doman,id:20} 此外,php类似乎也在运行,因为在我发送表单“我得到打印”后,您的名字已经更改!要返回,请单击“;这是命中注定的 最后,查询本身更新成员集fname=?,lname=?其中id=?在SQL控制台中使用值而不是问号手动激发时,也可以完美地工作 尽管如此,整个脚本还是无法工作,我收到消息说它成功了,但表仍然无

我正在尝试创建一个用于更改名字/姓氏的用户面板

看起来$ajax表单处理做得很好,因为我可以console.logdata并查看{fname:Damian,lname:Doman,id:20}

此外,php类似乎也在运行,因为在我发送表单“我得到打印”后,您的名字已经更改!要返回,请单击“;这是命中注定的

最后,查询本身更新成员集fname=?,lname=?其中id=?在SQL控制台中使用值而不是问号手动激发时,也可以完美地工作

尽管如此,整个脚本还是无法工作,我收到消息说它成功了,但表仍然无法更新

HTML:


我做错了什么?目前控制台中没有任何错误。

您要执行的数组的值顺序错误,它应该是$fname、$lname、$id以匹配查询中的顺序

但依我看,最好使用命名占位符而不是有序占位符。那么顺序就无关紧要了

$stmt = $pdo->prepare('UPDATE members SET fname = :fname, lname = :name WHERE id = :id');
$stmt->execute([':id' => $id, ':fname' => $fname, ':lname' => $lname]);

如果$stmt->execute[$id,$fname,$lname]{看起来这些查询的顺序不正确。@Conorred通常是个好建议,但对这种情况没有帮助。他没有收到错误。应该是$stmt->execute[$fname,$lname,$id]对。使用命名占位符而不是?可以完全避免这些问题。然后使用关联数组。如果使用问号占位符,顺序必须完全相同。如果使用Barmar答案中的命名占位符,顺序不重要。感谢您的回答!就像我在评论部分中写的一样-不能lieve它就是这么简单。所以让我把它弄对-执行的顺序必须与MySQL查询中这些名称/变量出现的顺序相同?占位符技巧似乎也为我将来在这件事上节省了很多麻烦,谢谢!
$("#name-submit").click(function(){
                var data = { "fname": $('#fname').val(), "lname": $('#lname').val(), "id": $('#id').val() };
                if($("#fname").val() != "" && $("#lname").val() != ""){
                    $.ajax({
                      method: "POST",
                      url: 'changename.php',
                      data: data,
                    }).done(function( msg ) {
                        console.log(data);
                        if(msg !== ""){
                            $(".ui-widget").show();
                            $(".ui-state-error-text").html(msg);
                        }else{
                            window.location = "userpage.php";
                        }
                    });
                }else{
                    $(".ui-widget").show();
                    $(".ui-state-error-text").html("<strong>Error:</strong> Please, fill in both the first and last name.");
                }
            });
<?php
    require_once '../../class/user.php';
    require_once '../../config.php';

    $id = filter_input(INPUT_POST, 'id', FILTER_SANITIZE_STRING);
    $fname = filter_input(INPUT_POST, 'fname', FILTER_SANITIZE_STRING);
    $lname = filter_input(INPUT_POST, 'lname', FILTER_SANITIZE_STRING);

    if( $user->userUpdate($id, $fname, $lname)) {
        print 'Your name has been changed! To go back, please click <a href="userpage.php">here</a>';
        die;
    } else {
        $user->printMsg();
        die;
    };
public function userUpdate($id,$fname,$lname){
        $pdo = $this->pdo;
        if(isset($id) && isset($fname) && isset($lname)){
            $stmt = $pdo->prepare('UPDATE members SET fname = ?, lname = ? WHERE id = ?');
            if($stmt->execute([$id,$fname,$lname])){
                return true;
            }else{
                $this->msg = 'User information change failed.';
                return false;
            }
        }else{
            $this->msg = 'Provide a valid data.';
            return false;
        }
    }
$stmt = $pdo->prepare('UPDATE members SET fname = :fname, lname = :name WHERE id = :id');
$stmt->execute([':id' => $id, ':fname' => $fname, ':lname' => $lname]);