2017-03-26 98 views
0

那么我从哪里开始。PHP表单不会将新数据发送到MySQL

我建立了一个英国的CAD系统(英国警察角色战队)。有问题的区域看起来像这样:看起来像这样:HR

我创建了一个英特尔页面,创建了MySQL表列,都很好。但是,当我编辑编辑用户按钮的代码,包括编辑访问英特尔,它停止工作。整个表单不会发送任何信息。

这里是编辑表单的PHP代码:

<?php 
 
\t include('./includes/init.php'); 
 
\t 
 
\t $id = displayData($_POST['id']); 
 
\t 
 
\t $sql = "SELECT * FROM users WHERE id = '$id';"; 
 
\t $result = mysqli_query($link, $sql); 
 
\t $row = mysqli_fetch_array($result); 
 
?> 
 

 
<form> 
 
\t <label>Rank</label> 
 
\t <input type="text" class="form-control" id="txtUserRank" value="<?php echo displayData($row['rank']); ?>" /> 
 
\t <label>Division</label> 
 
\t <input type="text" class="form-control" id="txtUserDiv" value="<?php echo displayData($row['division']); ?>" /> 
 
\t <label>Control Access</label> 
 
\t <select id="txtControl" class="form-control"> 
 
\t \t <option value="<?php echo displayData($row['controlAccess']); ?>"><?php echo BoolToLabel(displayData($row['controlAccess'])) ?> (Current)</option> 
 
\t \t <option value="0">No</option> 
 
\t \t <option value="1">Yes</option> 
 
\t </select> 
 
\t <label>SLT Access</label> 
 
\t <select id="txtSLT" class="form-control"> 
 
\t \t <option value="<?php echo displayData($row['sltAccess']); ?>"><?php echo BoolToLabel(displayData($row['sltAccess'])) ?> (Current)</option> 
 
\t \t <option value="0">No</option> 
 
\t \t <option value="1">Yes</option> 
 
\t </select> 
 
\t <label>Intel Access</label> 
 
\t <select id="txtIntel" class="form-control"> 
 
\t \t <option value="<?php echo displayData($row['intelAccess']); ?>"><?php echo BoolToLabel(displayData($row['intelAccess'])) ?> (Current)</option> 
 
\t \t <option value="0">No</option> 
 
\t \t <option value="1">Yes</option> 
 
\t </select> 
 
\t <br /> 
 
\t <button class="btn btn-block btn-info btnSaveSLTUserChanges">Save Changes</button> 
 
\t <hr /> 
 
\t <button class="btn btn-block btn-danger btnDeleteUser">Delete User</button> 
 
</form>

这里是php文件发送数据到数据库的代码:

<?php 
include('./includes/init.php'); 

$id = displayData($_POST['id']); 
$rank = displayData($_POST['rank']); 
$div = displayData($_POST['div']); 
$control = displayData($_POST['control']); 
$slt = displayData($_POST['slt']); 
$intel = displayData($_POST['intel']); 

$sql = "UPDATE `users` SET `rank`='$rank',`division`='$div',`controlAccess`='$control',`sltAccess`='$slt', `intelAccess`='$intel' WHERE id = '$id';"; 
mysqli_query($link, $sql); 

这里是.js代码

$('body').on('click', '.btnSaveSLTUserChanges', function() { 
 
\t 
 
\t var id = $('#addUnitsModalBody').attr("unitid"); 
 
\t var rank = $('#txtUserRank').val(); 
 
\t var div = $('#txtUserDiv').val(); 
 
\t var control = $('#txtControl').val(); 
 
\t var slt = $('#txtSLT').val(); 
 
    var intel = $('#txtIntel').val(); 
 
\t 
 
\t var dataString = 'id=' + id + '&rank=' + rank + '&div=' + div + '&control=' + control + '&slt=' + slt + '&intel=' + intel; 
 
\t \t $.ajax({ 
 
\t \t \t type: "POST", 
 
\t \t \t url: "./sltEditAccount.php", 
 
\t \t \t data: dataString, 
 
\t \t \t success: function(response) { 
 
\t \t \t \t $('#Members').load(document.URL + ' #Members'); 
 
\t \t \t } 
 
\t \t }); 
 
});

任何帮助,将主要赞赏。

注意:在我添加任何与英特尔做的事情之前,表单工作正常,没有问题。

感谢 泰勒

+0

我不知道'displayData()'是做什么的,但我可以肯定地说它不会**防止mysql注入。 – Xorifelse

回答

0

我看不出哪里是元素“addUnitsModalBody”定义

var id = $('#addUnitsModalBody').attr("unitid"); 

你有没有试过看到在您的浏览器控制台输出,看它是否报告任何JavaScript错误?

+1

这是一个阿贾克斯调用 –

+0

@lazy_coder对,编辑答案。谢谢 – SirNarsh

+0

没有,因为你使用javascript来跟踪使用AJAX的点击和POST,表单方法是不相关的,因为它没有被使用。请注意,在您的地址栏中,它不会将您重定向到的网址为 ?queries = things&something_else = like_this – SirNarsh

0

修正了它。

`sltAccess`='$slt', `intelAccess`='$intel' 

改变了它之间的空间

`sltAccess`='$slt',`intelAccess`='$intel' 

现在工作得很好,感谢大家的帮助,真的觉得有点傻,现在哈哈。

+0

这不可能是问题,空间就像是在查询完全有效的任何区别。你必须改变别的东西,保证。 – Qirel

+0

绝对是别的问题,我故意在更新查询中的每个逗号后留下空格 – SirNarsh