0

我正在尝试更新状态 onclick。在显示功能中我给出了这样的

if($row['IsActive']=="1")
{
    echo "<td> <a href='managecategories.php?IsActive=0&CategoryID=" .$row['CategoryID']. "'>Active</a></td>";
}
else
{
    echo "<td> <a href='managecategories.php?IsActive=1&CategoryID=" .$row['CategoryID']. "'>Deactive</a></td>";
}

并且在加载页面时它应该获得数据库状态,因为我已经编写了这样的代码

      if (isset($_GET['IsActive']))
{
$status = $_GET['IsActive'];
$id = $_GET['CategoryID'];
 if($status =="0")

{

$sql = "update Categories set IsActive= 0 where CategoryID='$id'";
        $result = mysql_query($sql) or die("Could not insert data into DB: " . mysql_error());
}        
else 
 if($status =="1")
{
$sql = "update Categories set IsActive= 1 where CategoryID='$id'";
        $result = mysql_query($sql) or die("Could not insert data into DB: " . mysql_error());
}        
}

但我没有得到任何结果而不是错误......请帮我看看我错在哪里

4

2 回答 2

0

在 MySQL 中,您没有trueand false,而只有0and 1( INT)。因此,将您的查询更改为以下内容:

$sql = "update Categories set IsActive= 0 where CategoryID='$id'"; // FALSE
$sql = "update Categories set IsActive= 1 where CategoryID='$id'"; // TRUE

此外,我看到在第一段代码中您正确地执行了此操作:如果行处于活动状态,则打印一个链接以停用 ( if 1 then print 0),反之亦然。

但是在第二段代码中,你得到了你必须在$status变量中设置的值,然后你再说一遍if 1 then store 0。这是个错误。事实上,这样你总是运行一个 UPDATE 查询,将活动状态设置为其当前值,因为双交换

也就是说,尝试交换第二段代码中的查询,如下所示:

if ($status == "0") 
{
    $sql = "update Categories set IsActive=0 where CategoryID='$id'";
    $result = mysql_query($sql) or die("Could not insert data into DB: " . mysql_error());
}        
else if($status == "1")
{
    $sql = "update Categories set IsActive=1 where CategoryID='$id'";
    $result = mysql_query($sql) or die("Could not insert data into DB: " . mysql_error());
}        
于 2012-05-18T09:48:40.320 回答
0

我假设您在数据库中使用整数类型。我知道我会使用TINYINT任何布尔值,因为 MySQL 没有布尔类型。您的显示功能if($row['IsActive']=="1")支持这一点。但是,您的更新查询$sql = "update Categories set IsActive= 'false' where CategoryID='$id'";不会。在这里,您尝试保存一个字符串值。

因此,您应该首先确保布尔值作为 a 存储TINYINT在数据库中。(字符串在 PHP 端更难使用。)然后您需要确保插入到数据库中的值实际上是正确的类型。你应该使用 0false和 1 true。这也适用于 PHP:

$isActive = 1;
$if($isActive) {
   // This code is run
}

另请注意,您应该验证类别 ID。您现在在没有事先验证的情况下插入用户输入,这很危险。用户很容易在一个命令中激活或停用所有类别。

于 2012-05-18T10:01:11.610 回答