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