我有这个代码:
if ($row['locked'] == 0) {
mysql_query("UPDATE questions SET locked=1 WHERE id='".$topic_id."'") or die('not working');
}
if ($row['locked'] == 1){
mysql_query("UPDATE questions SET locked=0 WHERE id='".$topic_id."'") or die('not working');
}
它应该切换锁定,但它只将其设置为 1。反之则不然。
为什么?
为什么你不能只做:
mysql_query("UPDATE questions SET locked = NOT locked WHERE id='".$topic_id."'") or die('not working');
这将直接切换locked
列,您将不需要if
语句。
为什么?
因为$row['locked']
等于零。
只需设置$row['locked'] = 1;
在您的控制语句之前。
顺便说一句,
你从哪里得到你的$row['locked']
?共享更多代码。
为什么不只在查询中包含变量,而不是编写条件语句?
例如:
$updateTo=!$row['locked'];
$query = "UPDATE questions SET locked='$updateTo' WHERE id='$topic_id'";
附言开始使用mysqli
或PDO
预准备语句,而不是旧的、已弃用的mysql_query
。
或者只是为了解决您的问题:
将$row['locked']
设置为 1;
例如,这将通过单击按钮触发操作。
.PHP:
if(isset($_POST['submit'])) {
$row['locked'] = 1;
}
.HTML:
<form action='<?php echo $_SERVER['PHP_SELF'];?>' method='post'>
<input type='submit' name='submit' value='post' />
</form>