首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP中验证多个空字段

在PHP中验证多个空字段
EN

Stack Overflow用户
提问于 2013-08-10 19:29:38
回答 4查看 2.9K关注 0票数 0

我有以下语句来验证PHP中的空字段,它工作得很好:

代码语言:javascript
复制
if (isset($_SESSION['logged_in'])) {
if (isset($_POST['room'], $_POST['area'])) {
    $room = $_POST['room'];
    $area = $_POST['area'];

    if (empty($room) or empty($area)) {
        $error = 'Required!';
    } else {
        $query = $pdo->prepare('INSERT INTO apartments (apartments_room, apartments_area) VALUES (?, ?)');

        $query->bindValue(1, $room);
        $query->bindValue(2, $area);

        $query->execute();

        header('Location: index.php');

    }
}

我现在已经打开了更多的列在数据库中,因此也有更多的插入字段在html中进行验证。我的问题是,在这种情况下,当检查多个空字段时,我如何制定用于验证的if语句。

举个例子,这个代码不再工作了:

代码语言:javascript
复制
if (isset($_SESSION['logged_in'])) {
if (isset($_POST['room'], $_POST['area'], $_POST['rent'], $_POST['address'], $_POST['floor'], $_POST['city'], $_POST['freeFromDate'])) {
    $room = $_POST['room'];
    $area = $_POST['area'];
    $rent = $_POST['rent'];
    $address = $_POST['address'];
    $floor = $_POST['floor'];
    $city = $_POST['city'];
    $freeFromDate = $_POST['freeFromDate'];

    if (empty($room) || empty($area) ||  empty($rent) ||  empty($address) ||  empty($floor) ||  empty($city) || empty($freeFromDate)) {
        $error = 'Required!';
    } else {
        $query = $pdo->prepare('INSERT INTO apartments (apartments_room, apartments_area, apartments_rent, apartments_address, apartments_floor, apartments_city, apartments_freeFromDate) VALUES (?, ?, ?, ?, ?, ?, ?)');

        $query->bindValue(1, $room);
        $query->bindValue(2, $area);
        $query->bindValue(3, $rent);
        $query->bindValue(4, $address);
        $query->bindValue(5, $floor);
        $query->bindValue(6, $city);
        $query->bindValue(7, $freeFromDate);

        $query->execute();

        header('Location: index.php');

    }
}

这里的语法是怎么表达的?

谢谢!

EN

回答 4

Stack Overflow用户

发布于 2013-08-10 19:32:08

or更改为||

代码语言:javascript
复制
if (empty($room) || empty($area) ||  empty($rent) ||  empty($address) ||  empty($floor) ||  empty($city)) {
$error = 'Required!';

http://php.net/manual/en/language.operators.logical.php

票数 0
EN

Stack Overflow用户

发布于 2013-08-10 19:44:35

这就到了脚本的可维护性和可读性差将开始产生人为错误的阶段。

在脚本的顶部创建一个更容易阅读的数组,这样您就不必在脚本中到处寻找。

代码语言:javascript
复制
$expecteds = array('room'
, 'area'
, 'rent'
,'address'
);

然后先失败:

代码语言:javascript
复制
foreach($expecteds as $expected){

if(!array_key_exists($expected, $_POST))
 exit($expected . ' is required!');

}

//从现在开始,你就知道预期的变量是存在的.

票数 0
EN

Stack Overflow用户

发布于 2013-08-10 19:44:36

OR的意思与PHP中的|相同。

您应该调试var以检查是否通过了这些

代码语言:javascript
复制
"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE

如果这样做,if语句将失败,因为empty将返回true。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18161414

复制
相关文章

相似问题

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