1

我有这个代码:

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。而不是相反。

为什么?

4

3 回答 3

3

为什么你不能这样做:

    mysql_query("UPDATE questions SET locked = NOT locked WHERE id='".$topic_id."'") or die('not working');

这将直接切换locked列,您将不需要这些if语句。

于 2013-09-16T01:15:46.113 回答
0

为什么

因为$row['locked']等于零。

简单设置$row['locked'] = 1;

在您的控制语句之前。

于 2013-09-16T01:04:33.707 回答
0

顺便说一句,你从哪里得到你$row['locked']的?分享更多代码。

为什么不将变量包含在查询中而不是编写条件语句?

例如:

$updateTo=!$row['locked'];

$query = "UPDATE questions SET locked='$updateTo' WHERE id='$topic_id'";

PS 开始使用mysqliPDO准备好的语句,而不是旧的,不推荐使用的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>
于 2013-09-16T01:12:40.833 回答