首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php if条件中的问题

问php if条件中的问题
EN

Stack Overflow用户
提问于 2010-06-25 14:56:59
回答 3查看 642关注 0票数 5

我有个小问题。我通过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的

下面是我的代码

代码语言:javascript
复制
<?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!!";}
     ?>

有什么办法可以预防吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-25 15:02:32

您使用的是赋值运算符=,而不是相等运算符==。

尝试更改此设置:

代码语言:javascript
复制
elseif ($_GET['mode']='edit') {

要这样做:

代码语言:javascript
复制
elseif ($_GET['mode']=='edit') {
票数 8
EN

Stack Overflow用户

发布于 2010-06-25 15:03:34

问题在于,在下面几行if语句中,您不是在进行比较,而是为GET数组中的mode元素赋值:

代码语言:javascript
复制
...
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,这就是它出现在编辑部分的原因。

票数 5
EN

Stack Overflow用户

发布于 2010-06-25 15:08:23

解决方案:

问题肯定出在elseif ($_GET['mode']='edit') {行上;那里的=操作符将$_GET['mode']设置为'edit' (其计算结果始终为true)。一个很好但在词汇上令人困惑的做法是编写条件语句,如下所示:

代码语言:javascript
复制
if (5 == $some_var)

如果没有包含第二个=,它将立即给出错误。

建议:

您可能希望实现一个switch控件来组织代码:

代码语言:javascript
复制
<?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!!";
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3116131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档