PHP href 在 sql 中更新或切换真 1 或假 0 值


PHP href update or toggle true 1 or false 0 value in sql

我有一个从数据库中输出的产品列表,我想有一个产品选项,当值为"1"表示收藏时显示彩色图标,当值为"0"表示不喜欢时显示灰色。

我的问题是如何更改/切换/更新变量为"0"(如果它当前为"1"(,以及如何更改为"1",其中当前为"0",具有相同的 href。

我可以通过以下内容正确显示上述内容...

$favourite = $row["favourite"];
switch(strtoupper($favourite))
{
case '0': $favourite_img = 'heart_16-no'; break;
case '1': $favourite_img = 'heart_16'; break;
default: $favourite_img = 'heart_16-no'; break;
}
$fav_img = "<img src='https://www.mysite.com/storeadmin/img/Basic_set_Png/$favourite_img.png'>";

我通过 href 将数据库中的产品值更新为"1",并在必要时不要回到"0"......

//make item favourite
if(isset($_GET['favouriteid'])){
$id_to_favourite = $_GET['favouriteid'];
$sql = mysql_query("UPDATE products SET favourite=1 WHERE id='$id_to_favourite' LIMIT 1") or die (mysql_error());
header("location: inventory_list.php");
exit();
}

我相信这很容易,我只是不知道正确的方法,所以真的可以搜索任何参考。

也许是这样的东西...

if(isset($_GET['favouriteid'])){
  $id_to_favourite = $_GET['favouriteid'];
  if (isset($row["favourite"]) && $row['favourite'] == '0') {
  mysql_query("UPDATE products SET favourite=1 WHERE id='$id_to_favourite' LIMIT 1") or die (mysql_error());
    } else if (isset($row["favourite"]) && $row['favourite'] == '1') {
    mysql_query("UPDATE products SET favourite=0 WHERE id='$id_to_favourite' LIMIT 1") or die (mysql_error());
    }
    header("location: inventory_list.php");
    exit();
    }

由于它是一个布尔值,您可以使用bang (!( 来反转或切换它

例如,

UPDATE products SET favourite = !favourite WHERE id='$id_to_favourite' LIMIT 1

这将简单地将 0 更改为 1,或将 1 更改为 0

请注意

,在查询中实际使用它之前,您应该始终在所谓的整数输入上使用intval()(xss 无处不在!也就是说,只需在列前面使用 ! 运算符(true = 1,false = 0,因此您可以使用这些运算符(。

可以使用三元运算符

$fav = (isset($row["favourite"]) && $row['favourite'] == '0') ? 1 : 0;

然后像这样运行查询

"UPDATE products SET favourite = $fav WHERE id='$id_to_favourite' LIMIT 1"