我有一个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");}
}
}
答案 0 :(得分:2)
首先,=
用于分配。 ==
用于比较。
其次,使用不带引号的索引typeofdog
是不正确的。 PHP explains why here.
试试这个:
if ($row['typeofdog'] == 'Labrador')
如果这不起作用,则$row['typeofdog']
不等于'Labrador'
。在这种情况下,尝试在条件之前回显$row['typeofdog']
,以便您可以看到正在比较的内容。
此外,是的,您有进行SQL注入的风险。修复此问题的第一步: don't use mysql 。而是使用mysqli或pdo并使用prepared statements。