php if条件下的问题

时间:2010-06-25 06:56:59

标签: php conditional-statements if-statement

我有一个小问题。我通过foro.php访问网站?id = 74& mode = add或foro.php?id = 74& mode =编辑它工作正常..但是当我为foro.php添加冒号,分号(;或:)时?id = 74& mode =将其添加到编辑选项

foro.php ID = 74&安培;模式=添加;
?foro.php ID = 74&安培;模式=添加:
?foro.php ID = 74&安培;模式=添加”

以下是我的代码

<?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!!";}
     ?>

如何防止它?

3 个答案:

答案 0 :(得分:8)

您已使用赋值运算符=而不是等于运算符==

尝试更改此内容:

elseif ($_GET['mode']='edit') {

到此:

elseif ($_GET['mode']=='edit') {

答案 1 :(得分:5)

问题在于,在以下几行中,在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,这就是它进入编辑部分的原因。

答案 2 :(得分:5)

<强>解决方案:

问题肯定在于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!!";
}
相关问题