Javascript 使用ajax更新数据库不需要';行不通
为什么这不起作用Javascript 使用ajax更新数据库不需要';行不通,javascript,php,ajax,Javascript,Php,Ajax,为什么这不起作用 <form id='formprofile' autocomplete='off'> <input type='text' name='name' value='<?php echo $row['name'];?>'> <input type='text' name='sname' value='<?php echo $row['sname'];?>'> <button type='but
<form id='formprofile' autocomplete='off'>
<input type='text' name='name' value='<?php echo $row['name'];?>'>
<input type='text' name='sname' value='<?php echo $row['sname'];?>'>
<button type='button' id='btnsave'>Save</button>
</form>
profilesave.php
$('#btnsave').click(function(){
$.ajax({
url: 'profilesave.php',
type: 'post',
data: $('#formprofile').serialize(),
success: function(data) {
if (data =='empty'){
alert ('something is missing!');
}
else{
alert ('profile saved');
location.href = 'index.php';
}
}
});
});
extract($_POST);
if ($name == ''){
echo ('empty');
exit();
}
try {
$stmt = $db->prepare('UPDATE members SET name = :name, sname = :sname WHERE user = :"' . $user . '"');
$stmt->execute(array(
":name" => $name,
":sname" => $sname
));
}
catch(PDOException $e) {
echo $e->getMessage();
}
数据库未更新。变量
$user
已测试,它存在并具有propper值
数据库未更新。变量
$user
已测试,它存在并具有propper值 假设profilesave.php
的内容可能更多(即:数据库包含和其他变量,如$user
),那么您可能应该像这样构造准备好的语句,而不是直接嵌入值。您可以在尝试执行语句之前测试语句是否已成功创建
try{
$name = !empty( $_POST['name'] ) ? $_POST['name'] : false;
$sname = !empty( $_POST['sname'] ) ? $_POST['sname'] : false;
if( $name && $sname ){
$stmt = $db->prepare( 'UPDATE members SET name = :name, sname = :sname WHERE user = :user' );
if( $stmt ){
$stmt->execute( array(
':name' => $name,
':sname' => $sname,
':user' => $user
)
);
} else {
echo 'Prepared statement failed';
}
}
} catch( PDOException $e ){
echo $e->getMessage();
}
其中user=:“.$user.”“
?”??为什么要这样做,而不是像:name
和:sname
?变量$user
来自profilesave.php
脚本中?RamRaider,它来自代码顶部的另一个包含文件。它是经过测试的,它是存在的,并且具有支持价值。这是有效的,谢谢,但是。。。我的代码中有什么错误?它应该是正确的。不完全正确-您的最终sql看起来像更新成员集名称=:名称,sname=:sname WHERE user=:“Fred”
~假设$user是Fred-注意Fred前面的前导冒号!确切地谢谢。