有一个ajax代码,它显示页面上的错误和成功,但实际上并没有更新数据库,当我点击提交按钮。ajax代码没有在MySQL数据库中更新
表单有一个选择下拉列表,选项从数据库填充。我知道PHP代码的工作原理,因为没有ajax,表得到更新,所以我必须缺少的东西在ajax,但无法找到?
form.php的用脚本
<form id="test" name="test" method="POST" action="test.php">
<select id="updateid" name="updateid">
<option value="">- Please Select -</option>
<?php
$sql = "SELECT updateid, name FROM test";
$res = $con->query($sql);
while($row = mysqli_fetch_array($res)){
echo "<option value=".$row['updateid'].">".$row['name']."</option>";
}
?>
</select>
<input type="submit" value="Submit" name="submit" id="submitbut" />
</form>
$(document).ready(function(){
$('#submitbut').click(function(e){
var updateid = $("#updateid").val();
if(updateid.length == 0){
$("#success").text("make a selection.");
$("updateid").focus();
}
else{
var dataString = 'updateid='+ updateid
$.ajax({
type:'POST',
url:'test.php',
data: {updateid:dataString}
}).done(function(){
$('#success').text('success!');
});
}
e.preventDefault();
});
});
test.php的
<?php
if(isset($_POST['submit'])) {
$updateid= $_POST['updateid'];
$sql = "UPDATE `test` SET `test`='abcdegfhi' WHERE `updateid` = '$updateid'";
if (mysqli_query($con, $sql)) {
echo "ok";
} else {
echo "nope";
}
}
?>
现在的问题不是关于SQL注入虽然是
如下您可以设置数据?谢谢,但没有回答我的问题。但是,关于这个话题,当你在这里。那么我将如何改进呢?请问这个查询是'$ stmt = $ db-> prepare('update test set test =?where updateid =?'); $ stmt-> bind_param('abcdefghi',$ test,$ updateid); $ stmt-> execute();' – abcdefghijklmnop 2015-02-10 15:28:31
确切地说,这是不是回答你的问题?我已经明确指出它为什么会失败 - 您将不良数据传递到where子句中,导致查询无法匹配。 – 2015-02-10 15:54:35