PHP href更新或在sql中切换true 1或false 0值

时间:2013-04-22 06:18:58

标签: php sql-update toggle href

我有一个从数据库输出的产品列表,我想有一个选项让产品成为“最喜欢的”产品,并在最喜欢的值为“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();
    }

3 个答案:

答案 0 :(得分:1)

因为它是一个布尔值,你可以使用bang(!)来反转或切换它

如,

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

这只会将0更改为1或1至0

答案 1 :(得分:1)

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

答案 2 :(得分:0)

您可以使用三元运算符

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

然后像这样运行你的查询

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