我正在为我的网站工作一个管理面板,它将更改网站设置。除了提交一些值时我收到的PHP警告数之外,所有事情都按照预期的方式运行。我得到错误<code>未定义索引</code>。我知道您可以使用isset()
,但在我的情况下,这将非常混乱。如果没有设置值,我如何将数据库中的值用作默认值?
我的代码:
<?php
if(!empty($_POST)) {
$_POST['cms_and_posting'] = (bool) $_POST['cms_and_posting'];
$_POST['google_verify'] = (bool) $_POST['google_verify'];
}
?>
我听说过PHP中的“零合并操作符”,但是我对如何在我的代码中使用它有点困惑。
您有来自数据库的一系列设置,所以我认为您有类似于
$options['cms_and_posting'] = 1;
然后,您可以使用Foreach()
:
foreach (array_keys($options) as $key) {
if (array_key_exists($key, $_POST)) {
$options[$key] = $_POST[$key];
}
}
请注意,在这里,您不检查值是什么。通常您的配置表类似于
varname varvalue vartype varregex varcomment
cms_and_posting 1 bool ^[01]$ Option
google_verify 1 bool ^[01]$ Option
user_email lserni@gmail.com email NULL Admin Email
pagesize 50 int ^\\d+$ Rows per page
...
您仍将运行 foreach
循环,使用过滤器函数适当地验证每个条目:
switch($option['vartype']) {
case 'bool':
if (in_array($value, [ '1', 'Y', 'y', 'YES', 'ON', 1 ], true)) {
$value = true;
} else if (in_array($value, [ '0', 'N', 'n', 'NO', 'OFF', 0 ], true)) {
$value = false;
} else {
throw new \Exception("{$value} is not a valid boolean");
}
break;
case 'email':
...
您可以使用空合并运算符。
<?php
if(!empty($_POST)) {
$_POST['cms_and_posting'] = $_POST['cms_and_posting'] ?? $youdbvalue1;
$_POST['google_verify'] = $_POST['google_verify'] ?? $youdbvalue2;
}
?>
问题内容: 我有一个表,用于存储有关某些事件重复发生的值,例如,与发生在星期一,星期三和星期五的事件,以及与发生在星期一和星期三的事件。所以我的桌子是这样的: 我的问题是有时(并非总是)我的脚本在数据库中插入重复的值,因此我的表的事件1和2的重复发生率是两倍,如下面的表所示: 如果我在列中添加约束,则事件1仅具有星期一值,但我希望该值具有其余值,例如星期三和星期五。如何添加约束来解决此问题? 问题
我在表中为某些列设置了默认值。例如,create_time我已经设置了CURRENT_TIMESTAMP。当我通过JPA插入一个对象时,我没有得到该列的默认值。是否有任何命令可以执行此操作?
我在StartDate-EndDate设置中有两个日期选择器,并且需要endDate选择器的日历在选定的startDate月份打开。 我已经尝试将默认日期设置为如下所示(日历打开的日期) 任何想法都很欣赏。
这是我的数据 我想一个接一个地标记数据帧。例如,对于index=3,目标是坏 基本上,我用我的专业知识一个接一个地拉出来 顺致敬意,
问题内容: 假设我有一个锚标记,例如 如何防止浏览器导航到 AngularJS中的 #? 问题答案: 更新 :此后,我改变了主意。经过更多的开发和花时间进行此工作之后,我相信针对此问题的更好解决方案是执行以下操作: 然后更新您的规则,使其具有附加规则: 它更加简单,并提供完全相同的功能,并且效率更高。希望对将来寻找该解决方案的其他人有所帮助。 以下是我以前的解决方案,仅出于遗留目的而留在这里: 如
在我的quarkus应用程序中有两个命名的数据源,我们称之为A和B: Quarkus.datasource.a.db-kind=Oracle Quarkus.datasource.b.db-kind=Oracle 因此,每次应用程序启动时,我都会收到这样的通知: 警告:无法确定默认数据源的数据库类型