为什么空提交内容后显示这个?

WBOY
发布: 2016-06-06 20:06:39
原创
913 人浏览过

如果什么都不输入 直接点击提交按钮 打印出来的是“没有” 为什么不是“你还没有输入”呢 我在前面已经做过判断了啊 isset($_POST['num'] 如果是空的内容应该就走最后一个else了啊 为什么不管用呢?

<code><!DOCTYPE html>
<html>
<head>
      <meta charset="utf-8">
    <title></title>
</head>
<body>
<form method="post">
    <input type="text" name="num">
    <button type="submit">提交</button>
</form>
<?php
if (isset($_POST['num'])) {
$pdo=new PDO("mysql:host=localhost;dbname=t1","root","");
$stmt=$pdo->prepare("select * from aaa where num=?");
$stmt->execute(array($_POST['num']));
$res=$stmt->fetchall(PDO::FETCH_ASSOC);
if($res){   
         foreach($res as $v){
          echo $v['name'];
         }
       }else{
        echo "没有";
       }
}else{
    echo "你还没有输入";
}
?>
</body>
</html>
</code>
登录后复制
登录后复制

回复内容:

如果什么都不输入 直接点击提交按钮 打印出来的是“没有” 为什么不是“你还没有输入”呢 我在前面已经做过判断了啊 isset($_POST['num'] 如果是空的内容应该就走最后一个else了啊 为什么不管用呢?

<code><!DOCTYPE html>
<html>
<head>
      <meta charset="utf-8">
    <title></title>
</head>
<body>
<form method="post">
    <input type="text" name="num">
    <button type="submit">提交</button>
</form>
<?php
if (isset($_POST['num'])) {
$pdo=new PDO("mysql:host=localhost;dbname=t1","root","");
$stmt=$pdo->prepare("select * from aaa where num=?");
$stmt->execute(array($_POST['num']));
$res=$stmt->fetchall(PDO::FETCH_ASSOC);
if($res){   
         foreach($res as $v){
          echo $v['name'];
         }
       }else{
        echo "没有";
       }
}else{
    echo "你还没有输入";
}
?>
</body>
</html>
</code>
登录后复制
登录后复制

isset($_POST['num'] )是判断存在这个变量名,只要存在了,
无论是空还是Null什么的,都会都进判断。
你应该修改成 if(trim($_POST['num']))

把isset方法改为empty即可:num不是没有设置值,而是为空

楼上正解,有时候你也可以这样写,if(isset($data) && $data){}

相关标签:
php
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!