0
我想更新mysql中的两个表中的细节,与服务器的详细信息更新正确,但即时通讯努力更新复选框值(尝试删除或插入到mysql中的复选框表)由此用户选择需要添加或从数据库中移除的复选框。MySQL的PHP更新多个复选框
这里是我的FORM:
<form role="form" method="post" action="update_serv.php" >
<div class="form-group">
<label>Server IP:</label>
<input class="form-control" id="ip" name="ip" value="<?php echo $server_ip;?>" required>
<p class="help-block">Example 192.168.100.12</p>
</div>
<div class="form-group">
<label>Server Name:</label>
<input class="form-control" id="na" name="na" value="<?php echo $server_name;?>" required>
<p class="help-block">Example Email Server</p>
</div>
<div class="form-group">
<label>Server Description:</label>
<input class="form-control" id="de" name="de" value="<?php echo $server_description;?>" required>
</div>
<div class="form-group">
<label>Server Ports:</label>
<label class="checkbox-inline" id="po">
<input type="checkbox" value="None" >None
</label>
<?php
// Get Server Information
$query = "SELECT port_no FROM _servers WHERE (server_id = '$servid') ";
$result = mysql_query($query)or die ('Unable to run query:'.mysql_error());
while($row = mysql_fetch_assoc($result)){
$sport_no = $row['port_no'];
}
$query = "SELECT id, name, port_no FROM ports ORDER BY name ASC";
$result = mysql_query($query)or die ('Unable to run query:'.mysql_error());
while($row = mysql_fetch_assoc($result)){
$port_id = $row['id'];
$port_no = $row['port_no'];
$port_name = $row['name'];
?>
<label class="checkbox-inline"><input type="checkbox" name="po[]" type="checkbox" id="po[]" value="<?php echo $row['port_no'] ;?>" <?php if ($port_no == $sport_no) {
echo 'checked';
}?>><?php echo $row['port_no'] ;?> (<?php echo $row['name'] ;?>)</label>
<?php
}
?>
</div>
<input type="hidden" name="u" id="u" value="<?php echo $servid;?>" />
<button type="submit" class="btn btn-success">Update Server</button>
</form>
这里是我的更新脚本:
<?php
// Update Server Details
// Get Server ID
$servid = $_POST['u'];
// Get Server IP
$servip = $_POST['ip'];
// Get Server NAME
$servname = $_POST['na'];
// Get Server DESCRIPTION;
$servdescription = $_POST['de'];
// Get Server PORTS
$servports = $_POST['po'];
// Include Configuration File
include ("_data/_conf.php");
///// Update Server Details
$sql="UPDATE servers SET server_ip = '$servip', server_name = '$servname', server_description = '$servdescription' WHERE unique_id = '$servid'";
$result=mysql_query($sql)or die ('Unable to run query:'.mysql_error());
///// Update Ports in Table _servers
//for ($i=0; $i<sizeof($servports);$i++) {
//$sql="UPDATE _servers SET server_name = '$servname', server_ip = '$servip', port_no = ".$servports[$i]." WHERE server_id = '$servid'";
//$result=mysql_query($sql)or die ('Unable to run query:'.mysql_error());
$portCount = count($_POST["po"]);
for($i=0;$i<$portCount;$i++) {
mysql_query("UPDATE _servers SET server_name='" . $_POST["na"][$i] . "', server_ip='" . $_POST["ip"][$i] . "', server_id='" . $_POST["u"][$i] . "', port_no='" . $_POST["po"][$i] . "' WHERE server_id='" . $_POST["u"][$i] . "'");
}
// }
header('Location: u_serv.php?u='.$servid.'&updated=true');
exit();
?>
服务器的详细信息被正确更新,但是从checboxes表单中的信息没有更新自己的MySQL表。
我是第一个说你不应该使用mysql_ *函数,因为它们被折旧。尝试使用PDO或mysqli。 – 2014-11-06 15:22:46
你很容易受到[sql注入攻击](http://bobby-tables.com)的影响。高枕无忧。你的服务器很快就会pwn3d,并且让你的问题没有意义。 – 2014-11-06 15:24:52