【问题标题】:INSERT NULL in MySQL, if string is empty in PHP after explode在 MySQL 中插入 NULL,如果字符串在 PHP 中爆炸后为空
【发布时间】:2018-09-20 13:25:18
【问题描述】:

在脚本中,我收到一个带有 GET 请求的变量值,我必须用分隔符将其分解,但有时部分字符串为空。如果字符串为空,如何在 INSERT 查询中声明插入 NULL?

$statement = $db->prepare('insert into _table (column1, column2, etc.) values (?, ?, etc.)
if (isset($_GET['var']) || isset($_GET['var1'])) { 
$pieces=explode("delimeter", $var);
// $data = array($somevar, $someothervar, $pieces[0], pieces[1], etc.);
} else {
// other things to do with // $data = array($somevar, $someothervar, etc.);
}
$statement->execute($data);

有时会发生 $pieces[0]、$pieces[1] 等的值是 "" (不包括引号,仅供参考),或者说是空的。如果任何爆炸的部分是空的,我如何让它在数据库中插入 NULL?由于 isset,不确定在哪里以及如何声明 !empty 检查。当前代码在表格行中输入空白,而不是为空的分解块输入 NULL。请注意,爆炸的碎片并不总是空的,有时不是所有的都是空的,有时都是空的。视情况而定。 :)

【问题讨论】:

标签: php mysql if-statement isset is-empty


【解决方案1】:

This 应该回答你的问题。

只需将您要插入的值设置为NULL 为null 例如$someVar = null;

在您的示例中,您可能想要检查数组中的任何值是否为空字符串并将其替换为null

foreach ($data as $key => $value) { 
    if $value === "" {
        $data[$key] = null;
    }
}

【讨论】:

  • 感谢您的回答!问题是碎片[x] 可能并不总是空的,或者其中一些可能是空的,有些则不是。如果未使用爆炸后的 var,则返回空字符串。如果为空,如何将其设置为将每个件 [x] 转换为 NULL?有趣的案例。以前从来没有过这种事。
猜你喜欢
  • 1970-01-01
  • 2011-07-20
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-22
相关资源
最近更新 更多