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