Liv*_*eEn 5 php if-statement conditional-statements
我有一个小问题.我访问该站点直通foro.php ID = 74&模式=添加或foro.php ID = 74&模式=编辑它工作得很好.但是当我添加一个冒号,分号(;β-或:)来foro.php ID = 74&模式=添加它转到编辑选项
foro.php ID = 74&模式=补充?;
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!!";}
?>
Run Code Online (Sandbox Code Playgroud)
任何方式如何预防呢?
您已使用赋值运算符=而不是相等运算符==.
尝试改变这个:
elseif ($_GET['mode']='edit') {
Run Code Online (Sandbox Code Playgroud)
对此:
elseif ($_GET['mode']=='edit') {
Run Code Online (Sandbox Code Playgroud)
问题是在以下几行中,在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());
...
Run Code Online (Sandbox Code Playgroud)
该操作返回true,第一次比较为false,这就是它进入编辑部分的原因.
解:
问题肯定在于elseif ($_GET['mode']='edit') {线路; =那里的运算符设置$_GET['mode']为'edit'(总是计算到true).一个好但有词汇混乱的做法是写条件如下:
if (5 == $some_var)
Run Code Online (Sandbox Code Playgroud)
如果=不包括第二个,将立即给出错误.
建议:
您可能希望实现一个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!!";
}
Run Code Online (Sandbox Code Playgroud)