PHP:isset 和 !empty 的快捷方式?

2024-01-04

我想知道是否有更好的想法来解决下面的问题,

我有一个带有许多输入字段的表单,例如,

<input name="pg_title" type="text" value="" />
<input name="pg_subtitle" type="text" value="" />
<input name="pg_description" type="text" value="" />
<input name="pg_backdate" type="text" value="" />
etc

但有时我的表单中不需要上面的某些输入字段,例如,我只需要数据库注入的页面标题,

<input name="pg_title" type="text" value="" />
 etc

我还有另一个 php 页面来处理$_POST data,

$pg_title = null;
$pg_subtitle = null;
$pg_description = null;
$pg_backdate = null;

 if(isset($_POST['pg_title']) && !empty($_POST['pg_title']) ) $pg_title = $_POST['pg_title'];
 if(isset($_POST['pg_subtitle']) && !empty($_POST['pg_subtitle']) ) $pg_subtitle = $_POST['pg_subtitle'];
 if(isset($_POST['pg_description']) && !empty($_POST['pg_description']) ) $pg_description = $_POST['pg_description'];
 if(isset($_POST['pg_backdate']) && !empty($_POST['pg_backdate']) ) $pg_backdate = $_POST['pg_backdate'];

每次我都必须检查是否$_POST设置某个输入字段的not empty,否则它的变量将被设置为null,这样我就不会在数据库中注入空白空间。

我找到了isset and !empty当我要处理一长串变量时,if 条件中的内容非常重复。

是否有任何默认的 PHP 函数'shorten'上面的过程?或者我是否必须编写一个用户定义的函数来处理这个问题?

或者也许还有另一种方法可以做到这一点?

只是我的 php 页面中处理 $_POST 数据的一些额外代码,

$sql = "
    UPDATE root_pages
    SET 
        pg_url = ?, 
        pg_title = ?,
        pg_subtitle = ?,
        pg_backdate = ?,
        pg_description = ?,     
        ...
        updated_by = ?
    WHERE pg_id = ?
    ";
        
    $result = $connection->run_query($sql,array(
        $pg_url, 
        $pg_title,
        $pg_subtitle,
        $pg_backdate,
        $pg_description,        
        ...
        $pg_id
        ));

如你所见$pg_subtitle, $pg_backdate, $pg_description, etc总是出现在我的查询中。所以如果我得到$pg_subtitle = ''代替$pg_subtitle = null当其中没有数据时,我的数据库记录将为该列留出一个空白空间。


isset && !empty是多余的。这empty语言构造基本上是简写!isset($foo) || !$foo, with !empty相当于isset($foo) && $foo。所以你可以通过省略来缩短你的代码isset check.

一个更简单的方法是:

$values = array('pg_title' => null, 'pg_subtitle' => null, …);
$values = array_merge($values, $_POST);

// use $values['pg_title'] etc.

如果您不想要默认值null被覆盖的值falsey值,例如'',你可以这样做:

$values = array_merge($values, array_filter($_POST));

请注意'0' is falsey以及。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP:isset 和 !empty 的快捷方式? 的相关文章

  • jQuery ajax 调用包含重音字符的 url 将错误的 Uri 从 IE 发送到服务器

    我在使用 IE 发送包含重音字符的 url 时遇到问题 这是一个简单的函数 function runjQueryTest var url test Beyonc get url function 在服务器 PHP 上我记录了请求uri的值
  • Yii2 - 错误请求 (#400) |前端和后端cookie

    仅当我打开时才会出现此问题frontend and backend在相同的browser 设想 与后端交互 gt 切换选项卡 gt 与前端交互 gt 切换选项卡返回 gt 与后端交互 gt 错误请求 400 Cookie 后端 identi
  • AWS-PHP-SDK / SNS 直接寻址返回错误

    您好 我正在使用 Laravel 4 设置来利用 AWS SNS 向我的 iOS 设备发送推送消息 从 AWS 控制台向我的设备发布命令效果很好 然后我尝试从 PHP sns AWS get sns sns gt publish array
  • 您的要求无法解析为 laravel 的一组可安装软件包

    我使用 5 7v Laravel 和 7 2 1v PHP 和 Composer 最新版本 但是当我想创建新项目时出现这些错误 Your requirements could not be resolved to an installabl
  • 使用 PHP/linux 将文件合并为单个 PDF

    我正在研究如何将多个 PDF 合并为一个 PDF 我正在寻找一个图书馆可靠且坚固尽可能 最好有一个库可以保留书签 鬼脚本 http pages cs wisc edu ghost 可以在保存书签的位置进行连接 但我遇到了麻烦 在一种情况下它
  • 分页显示所有其他页面上第 1 页的相同帖子

    我最近在创建即将发生的事件列表时得到了很多帮助 请参阅此处显示即将举行的活动 包括今天的活动 https stackoverflow com questions 17343615 showing upcoming events includ
  • Javascript 函数查找数字的倍数

    创建一个名为的函数multiplesOf 它将接受两个参数 第一个参数是数字数组 第二个参数是数字 该函数应返回一个新数组 该数组由参数数组中的每个数字组成 该数字是参数数字的倍数 So multiplesOf 5 6 7 8 9 10 3
  • 如何在 Windows 上安装 Zend 框架

    安装 Zend Framework 就是这么简单 是的 对 好吧 我正在写一本初学者的书 有一件不太详细的事情是最重要的部分 安装该死的东西 浏览了几个小时的快速入门指南后 它只说 下载 Zend 添加包含目录 bla bla 然后就完成了
  • 如何在codeigniter中将上传图片比例限制为16:9?

    这是我用来上传图像的代码 this gt load gt library upload ext pathinfo file name PATHINFO EXTENSION img name now ext imgConfig upload
  • 带倒计时的php循环

    假设我从 400 开始计数器 我将如何执行一个向后运行直到 0 的 foreach 循环 伪代码 i 400 foreach SOMETHING do stuff i for i 400 i gt 0 i do stuff 其他方法 i 4
  • CodeIgniter:My_Lang 中的 get_instance

    我发现这个有用的国际化代码 http pastebin com SyKmPYTX http pastebin com SyKmPYTX 一切正常 除了我无法在此类中使用 CI 函数 我想从 DB 设置 languages 和 special
  • 从 Laravel 4 输入生成新数组

    我使用 Input all 从动态生成的表单中获取一些输入 我使用 jQuery 来允许用户添加字段 字段名称为 first names last names 和 emails input 变量现在看起来像这样 array size 4 t
  • Jquery一键提交多个同名表单

    我有动态创建的循环表单 我需要一键提交所有表单 我正在遵循下面的代码 你能建议我怎么做吗 谢谢
  • session_start():无法解码会话对象

    我有时在使用 CodeIgniter 时遇到以下问题 错误 2019 03 05 19 57 26 gt 严重性 警告 gt session start 无法解码会话对象 会话已被销毁 system libraries Session Se
  • 使用会话 php 创建 cookie?

    我使用会话来登录我网站中的用户 问题是 我想让用户remember密码 因此关闭 打开浏览器后他们不需要再次登录 我需要使用 cookie 和 session 来实现它吗 my code user POST user pass POST p
  • PHP 表单 - 带验证蜜罐

    我有以下内容 效果很好 但对垃圾邮件机器人开放 我想放入蜜罐 而不是验证码 下面的代码适用于验证姓名 电子邮件 消息 但我无法让它与蜜罐一起工作 任何人都可以查看 蜜罐 代码并告诉我如何修复它吗 我希望表单给出 success2 不允许垃圾
  • 使用 Vue 的多模式组件

    我在 Vue 中实现动态模式组件时遇到问题 A common approach I follow to display a set of data fetched from the db is I dump each of the rows
  • Laravel 搜索关系

    我有两个相关的模型 我正在尝试在产品中进行搜索 并且仅显示实际搜索结果 而不是找到该产品的类别的所有产品 我不想搜索任何类别 因为无论搜索什么或找到什么 类别都会始终显示 Example I have the following categ
  • PHP更改小数点分隔符

    在某些情况下 PHP 会在操作后更改小数点分隔符 下面是一个示例 为什么小数点分隔符变成 这是一个多语言网站 在西班牙语版本中 区域设置设置为西班牙语 es ES 小数点分隔符为 这就是为什么正在改变 解决方案是强制 LC NUMERIC
  • 如何从日期中查找该月的最后一天?

    如何在 PHP 中获取该月的最后一天 Given a date 2009 11 23 我要2009 11 30 并给出 a date 2009 12 23 我要2009年12月31日 t返回给定日期所在月份的天数 请参阅的文档date ht

随机推荐

  • 仅反转sql server中字符串的数字部分

    使用 T SQL 我试图找到反转字符串中数字的最简单方法 所以对于像这样的字符串Test123Hello have Test321Hello Before After Test123Hello Test321Hello Tt143 Hell
  • Groovy Grails - 为后续请求存储对象

    我有一个 Web 应用程序 前端向服务器发出 ajax 请求以获取数据 在控制器中我有以下逻辑 def data def method def objects from params determine if it is a first r
  • C# 从静态函数中打印类名

    是否可以从静态函数中打印类名 e g public class foo static void printName Print the class name e g foo 您可以通过三个选项来获取类型 以及名称 YourClass在静态函
  • 使用STL容器进行中值计算时正确的做法是什么?

    假设我需要从 1000000 个随机数值序列中检索中位数 如果使用任何东西but std list 我没有 内置 方法对序列进行排序以进行中值计算 如果使用std list 我无法随机访问值来检索排序序列的中间 中位数 自己实现排序并使用例
  • 如何在Fragment类中加载WebView?如何在android中加载Webview?

    我正在尝试在应该加载的片段中创建一个 WebView 我已经将其添加到我的 xml 文件中 但是 findViewById 方法仅在我扩展 Activity 类时才有效 无论如何 我也可以在 Fragment 中使用它吗 我已经测试了另一个
  • 如何将浮点数和泛型类型相乘?

    我正在 OS X 上使用 C 在 Unity 3 4 2 中进行编程 我有一堂课如下 class Foo
  • MVC Url 请求 - 路径中存在非法字符

    概述 404错误页面在web config中配置并工作 使用 Umbraco v6 2 自定义错误设置为RemoteOnly 问题是当我在 URL 中输入 7C 时 我收到以下消息 Illegal characters in path De
  • 通过 simctl 启动时如何设置 iOS 模拟器语言

    我正在模拟器中使用启动我的应用程序xcrun simctl 我希望能够设置模拟器启动时使用的语言 即 一次运行时切换为法语 另一次运行时切换为英语 有没有办法做到这一点 以前是可以用的 AppleLanguages模拟器的选项 但似乎不再起
  • 是否可以从 JAXB 注释的类生成 XSD?

    我已经使用 JAXB 编写了许多类进行序列化 我想知道是否有一种方法可以根据注释为每个对象生成 XSD 文件 有这个工具吗 就像是generate xsd com my package model Unit java将会awesome 有什
  • 垃圾收集器如何处理 Java 中的原始数据类型?

    正如我们所知 对象通过引用计数和其他此类算法来工作 但对于原始数据类型 我们做不到NULL like int a NULL 垃圾收集器如何处理 Java 中的原始数据类型 原始数据类型要么是对象中的字段 要么是在本身就是对象的数组中使用 对
  • 如何修复 PHPMailer __autoload() 错误?

    我使用 phpMailer 来处理从网站发送的邮件 今天早上我突然收到这样的消息 致命错误 不再支持 autoload 请在第 45 行的 C xampp htdocs webapp PHPMailerAutoload php 中使用 sp
  • 如何按组计算 data.frame 与前一行的时间差

    我试图解决的问题是我有一个数据框 其中包含排序的 POSIXct 变量 每行都进行分类 我想获取每个级别的每行之间的时间差 并将该数据添加回新变量中 可重现的问题如下 以下函数仅用于创建随机时间的样本数据 为了这个问题的目的 random
  • FHIR 构建失败并出现 NoSuchMethodError:net.sf.saxon.Configuration.newConfiguration()

    按照说明进行操作http wiki hl7 org index php title FHIR Build Process http wiki hl7 org index php title FHIR Build Process我的 FHIR
  • Android 中如何获取像素颜色?

    我已将 PNG 图像 具有透明背景的图像 设置为按钮背景 当我触摸按钮时 它会显示按钮触摸位置的 X 坐标和 Y 坐标 但是 我想知道按钮触摸位置的像素颜色按钮 其实我想知道触摸的位置是按钮的透明区域还是按钮的彩色区域 您可以检查我为此目的
  • 如何在 Twitter bootstrap 中放置右侧固定导航栏

    我正在尝试在右侧添加 4 个导航按钮 单击它 我将能够导航到同一页面中的各个 div 就像单页面设计一样 我添加以下代码行以在页面右侧创建 4 个导航按钮 div class offset8 span1 well offset7 small
  • Django:使用“can_order”更改 FormSet 中表单的顺序

    我有一个表单 其中一个字段仅保留name家庭成员 我希望用户能够按照用户的意愿更改订单 当前的顺序是它们创建的顺序 我找到了旗帜can order对于我的表单集 当我将其添加到表单集中时 除了名称之外还出现了另一个字段 该字段是一个整数 显
  • 如何修复 R2jags::jags 中的“节点与父节点不一致”

    我正在使用 R 包 R2jags 运行下面附加的代码后 R 生成错误消息 节点与父节点不一致 我试图解决它 但是 错误消息仍然存在 我使用的变量是 i 采用 0 1 虚拟变量 ii NumInfo 一个计数器变量 其范围为 0 1 2 ii
  • 如何从 ASP.NET MVC# 输出中删除空格?

    如何从 ASP NET MVC 3 输出中删除所有空格 UPDATE 我知道如何使用 string Replace 方法或正则表达式来删除字符串中的空格 但我不知道如何在 ASP NET MVC 3 中使用主题来删除输出字符串中的所有空格
  • renderInContext 向应用程序内存征税

    我在 2448 X 2448 像素图像上运行此代码 fullScaleView也是 2448 X 2448 fullScreenView Rect 0 0 2448 2448 该方法完成后 应用程序内存从 49 7MB 跳至 240MB 再
  • PHP:isset 和 !empty 的快捷方式?

    我想知道是否有更好的想法来解决下面的问题 我有一个带有许多输入字段的表单 例如