denikov
denikov

Reputation: 869

update certain table column if else query

I'm trying to write a query to check which column to update. The user sends an action which they performed (a like or a comment) and I'm trying to update a table. Is it possible to check inside the query which column to update? For example:

DB structure:
id   imageName   imageLikesCount   imageCommentsCount

$actionPerformed = "like";
mysqli_query($link, "UPDATE table (if $actionPerformed=like SET imageLikesCount+1
else imageCommentsCount+1)
WHERE imageName='$image'");

I'm not sure how to phrase that, if it's possible at all. Any advice? Thanks in advance!

Upvotes: 0

Views: 66

Answers (3)

Dan Bracuk
Dan Bracuk

Reputation: 20804

I'm not a php programmer so my syntax won't be correct, but here are two ways to do it:

if ($actionPerformed == "like")
query for updating imageLikesCount
else if ($actionPerformed == "comment")
query for updating imageCommentsCount
else
whatever

Or

if ($actionPerformed == "like")
$column = "imageLikesCount";
else ($actionPerformed == "comment")
$column = "imageCommentsCount";

 $sql = "update table set $column = $column + 1";

Then execute it.

Upvotes: 0

VikingBlooded
VikingBlooded

Reputation: 859

though meverhart913 has a way to do it, the better way to do the same thing is to instantiate your variable based on the if condition, then just plug that variable into your string. This keeps you from having to repeat your string over and over as well as allows you to easily add additional conditions.

if($actionPerformed=="like"){
        $col = imageLikesCount;
    else{
        $col = imageCommentsCount;
    }
        mysqli_query($link, "Update table SET '$col' = '$col + 1'  where   imageName = '$image'");

Upvotes: 2

meverhart913
meverhart913

Reputation: 302

if($actionPerformed=="like"){
    mysqli_query($link, "Update table SET imageLikesCount = imageLikesCount + 1  where   imageName = '$image'");
 }
else {
    mysqli_query($link, "Update table SET imageCommentsCount = imageCommentsCount + 1 where imageName = '$image'");
}

Upvotes: 1

Related Questions