我有个小问题。我通过foro.php?id=74&mode=add或foro.php?id=74&mode=edit访问该网站,它工作得很好。但是,当我向foro.php?id=74&mode=add添加冒号、分号(;或:)时,它会转到编辑选项
foro.php?id=74&mode=add;
foro.php?id=74&mode=add:
Foro.php?id=74&mode=add的
下面是我的代码
<?php
$numb=mysql_real_escape_string($_GET['id']);
if ($_GET['mode']=='add') {
$sql1="select * from cello where number='".mysql_real_escape_string($numb)."' LIMIT 1";
$result1=mysql_query($sql1) or die(mysql_error());
while ($row=mysql_fetch_array($result1)) {
$name=$row['name'];
echo $name;
}
}
elseif ($_GET['mode']='edit') {
$sql="select * from cello account_number='".mysql_real_escape_string($numb)."' limit 1";
$result=mysql_query($sql) or die(mysql_error());
while ($row=mysql_fetch_array($result)) {
$acnumb=$row['number'];
$name=$row['name'];
$address=$row['address'];
echo $acnumb;
echo $name;
echo $address;
}
}
else {echo "error!!";}
?>有什么办法可以预防吗?
发布于 2010-06-25 15:02:32
您使用的是赋值运算符=,而不是相等运算符==。
尝试更改此设置:
elseif ($_GET['mode']='edit') {要这样做:
elseif ($_GET['mode']=='edit') {发布于 2010-06-25 15:03:34
问题在于,在下面几行if语句中,您不是在进行比较,而是为GET数组中的mode元素赋值:
...
elseif ($_GET['mode']='edit') {
$sql="select * from cello account_number='".mysql_real_escape_string($numb)."' limit 1";
$result=mysql_query($sql) or die(mysql_error());
...该操作返回true,第一次比较为false,这就是它出现在编辑部分的原因。
发布于 2010-06-25 15:08:23
解决方案:
问题肯定出在elseif ($_GET['mode']='edit') {行上;那里的=操作符将$_GET['mode']设置为'edit' (其计算结果始终为true)。一个很好但在词汇上令人困惑的做法是编写条件语句,如下所示:
if (5 == $some_var)如果没有包含第二个=,它将立即给出错误。
建议:
您可能希望实现一个switch控件来组织代码:
<?php
switch ($_GET['mode']) {
case 'add':
$sql1="select * from cello where number='".mysql_real_escape_string($numb)."' LIMIT 1";
$result1=mysql_query($sql1) or die(mysql_error());
while ($row=mysql_fetch_array($result1)) {
$name=$row['name'];
echo $name;
}
break;
case 'edit':
$sql="select * from cello account_number='".mysql_real_escape_string($numb)."' limit 1";
$result=mysql_query($sql) or die(mysql_error());
while ($row=mysql_fetch_array($result)) {
$acnumb=$row['number'];
$name=$row['name'];
$address=$row['address'];
echo $acnumb;
echo $name;
echo $address;
}
break;
default:
echo "error!!";
}https://stackoverflow.com/questions/3116131
复制相似问题