gpt4 book ai didi

javascript - MySQL/PHP/jQuery - 查询问题

转载 作者:行者123 更新时间:2023-11-29 10:51:51 24 4
gpt4 key购买 nike

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

看起来像$ajax表单处理做得很好,因为我可以 console.log(data)并参见{fname: "Damian", lname: "Doman", id: "20"}

此外,php 类似乎也在运行,因为在我发送表单后我得到 print 'Your name has been changed! To go back, please click <a href="userpage.php">here</a>';正如它的本来面目。

最后,当在 SQL 控制台中使用值而不是问号手动触发查询本身 ( UPDATE members SET fname = ?, lname = ? WHERE id = ? ) 时,查询本身也可以完美运行。

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

HTML:

<div class="changename-form-wrapper">
<h1>Define your first and last names here:</h1>
<div class="form-group">
<input type="text" name="fname" id="fname" tabindex="3" class="form-control ui-autocomplete-input" placeholder="First name..." value="">
</div>
<div class="form-group">
<input type="text" name="lname" id="lname" tabindex="4" class="form-control ui-autocomplete-input" placeholder="Last name...">
</div>
<div class="form-group">
<input type="text" name="id" id="id" tabindex="4" class="form-control ui-autocomplete-input" style="display:none;" value="<?=$_SESSION['user']['id']?>">
</div>
<div class="form-group">
<div class="row">
<div class="col-sm-6 col-sm-offset-3">
<input type="button" name="name-submit" id="name-submit" tabindex="4" class="form-control btn btn-login" value="Apply">
</div>
</div>
</div>
</div>
<div class="alert-space">
<div class="ui-widget" style="display:none;">
<div class="ui-state-error ui-corner-all">
<div class="p"><span class="ui-icon ui-icon-alert"></span></div><div class="p"><div class="ui-state-error-text"></div></div>
</div>
</div>
</div>

jQuery/AJAX:

$("#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.");
}
});

CHANGENAME.PHP 表单处理程序:

<?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;
};

最后是userUpdate($id, $fname, $lname)类代码:

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

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

最佳答案

您提供给 execute 的数组的值顺序错误,它应该是 $fname, $lname, $id 以匹配中的顺序查询。

但恕我直言,最好使用命名占位符而不是有序占位符。那么顺序并不重要。

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

关于javascript - MySQL/PHP/jQuery - 查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43596338/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com