简单的示例查询工作更新但跳过第一个条件

时间:2014-06-05 23:22:27

标签: php mysql

我有一个PHP代码更新了2个表中的值,我使用了左连接。它可以工作,但它继续跳过第一个条件,并始终进入第二个条件。我不知道mysql注入,所以如果我的代码很容易注入mysql,请提供建议。

elseif ($_POST['check'])
{
    if ($row[typeofdog] = 'Labrador') 
    {
            $id = $_POST['data'];   
            $count = count($id);

        for($i=0;$i<$count;$i++)
            {

            $sql = "UPDATE animals LEFT JOIN treats ON animals.style = treats.style SET animals.bone = bone - treats.total, treats.status = 'Approved' WHERE treats.id='$id[$i]'"; 
            $result = mysql_query($sql);

            }

        if($result){header("location:login_success.php");}

    }
    else
    {
        $id = $_POST['data'];   
        $count = count($id);

        for($i=0;$i<$count;$i++)
            {

            $sql = "UPDATE animals LEFT JOIN treats ON animals.style = treats.style SET animals.chunks = chunks - treats.total, treats.status = 'Approved' WHERE treats.id='$id[$i]'"; 
            $result = mysql_query($sql);

            }

        if($result){header("location:login_success.php");}

    }
}

1 个答案:

答案 0 :(得分:2)

首先,=用于分配。 ==用于比较。

其次,使用不带引号的索引typeofdog是不正确的。 PHP explains why here.

试试这个:

if ($row['typeofdog'] == 'Labrador') 

如果这不起作用,则$row['typeofdog']不等于'Labrador'。在这种情况下,尝试在条件之前回显$row['typeofdog'],以便您可以看到正在比较的内容。

此外,是的,您有进行SQL注入的风险。修复此问题的第一步: don't use mysql 。而是使用mysqlipdo并使用prepared statements