【发布时间】:2015-09-18 12:25:02
【问题描述】:
我有这张桌子:
在我的 SQL 中,我有一个名为“状态”的列,只有两个值:非活动和活动,默认情况下设置为非活动。
我的问题是,如果在单击“提交”按钮后选中特定行,我如何在我的数据库中将“状态”列更新为“活动”?即使检查了超过 1 行。我应该使用什么 SQL 查询(或者如果与 PHP 结合使用)?
顺便说一句,我正在使用 PHP。我已经研究过,似乎无法得到正确的答案。
提前感谢您提供的所有帮助/建议/建议。
更新:
我修改了@Vikas Umrao 的答案并做了一些更改。每当检查表行时,状态行就会成功更新。但是,先前更新的行保留在数组中并且不会重置。我会进一步解释,但在此之前,下面是我的数据库工作代码:
SQL(自己建立连接,我的是database.php)
CREATE TABLE IF NOT EXISTS `table_test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`department` varchar(255) NOT NULL,
`status` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
INSERT INTO `table_test` (`id`, `name`, `department`, `status`) VALUES
(1, 'Misha', 'Accounting', 'Inactive'),
(2, 'Justin', 'IT', 'Inactive'),
(3, 'Chris', 'HR', 'Inactive');
这是我的整个 index.php 作为一些基于 Vikas 的脚本
<?php
include('database.php');
$query = "SELECT * FROM table_test";
$result = mysql_query($query);
if($result === false) {
die(mysql_error());
}
echo "<form method='post' action='#'>
<h2>Table Content</h2>
<table>
<thead>
<tr style='background-color: rgb(102, 222, 93);'>
<td>Name</td>
<td>Department</td>
<td>Status</td>
<td></td>
</tr>
</thead>
<tbody>";
while($row = mysql_fetch_array($result)){
$row_id = $row['id'];
$name = $row['name'];
$department = $row['department'];
$status = $row['status'];
echo "<tr><td>" . $name . "</td><td>" . $department . "</td><td>" . $status . "</td><td><input type='checkbox' name='id[]' value='" . $row_id . "'/></td></tr>";
}
echo "</tbody></table><input type='submit' value='submit'></form>"; //end form
/***** Update Status *****/
/*print_r($_POST);*/
if(gettype($_POST['id'])=="array"){
foreach($_POST['id'] as $val){
$id_c = $val;
$query2 = "UPDATE table_test SET status = 'Inactive' where id='".$id_c."'";
$result2 = mysql_query($query2);
if($result2 === false) {
die(mysql_error());
}
echo "Status " .$id_c. " is updated. <br>";
}
}
mysql_close();
?>
更新问题:
当我检查一行然后单击提交时,数据库中的状态值会发生变化。我回应了更新 ID 的结果。但是,即使刷新页面后,数据行更新的值仍然存在。
假设我将更新查询更改为活动而不是非活动,如果我刷新页面并且之前更新的行是 Misha 和 Chris',那么即使我不希望他们的状态也将是活动的:
$query2 = "UPDATE table_test SET status = 'Active' where id='".$id_c."'";
所以每次我刷新页面时,即使没有选中它也会不断更新该行。如何清除 php 数组值?我已经看到了未设置和实例化,但似乎无法在此处应用它。我该怎么做?
以下是结果的示例截图:
谢谢!
=========================
最终:
我能够自己修复它。感谢大家!
【问题讨论】:
-
您到底要求什么?查询?
-
嗨@juergend,是的查询。抱歉,我更新了我的问题。谢谢! :)
-
您需要提供带有数据库主键值的复选框 ....try stackoverflow.com/questions/14474729/…
-
嗨@DoubleH,请参阅我的更新答案。你或许能帮上忙?谢谢!