我有一个包含许多可选字段的表单。我正在使用PHP和PDO从表单中收集数据并将其存储在数据库中。
由于某些可选字段可能为空,我只想存储实际具有值的输入。我可以很容易地识别具有价值的输入,但是如果不使用大量的IF语句,我似乎无法找到一种方法,只有在存在的情况下才能将值插入数据库。
我目前的PDO看起来像这样:
$data = array($var1, $var2, $var3, $var4, $var5, $var6);
$STH = $DBH->("INSERT INTO users (first, last, addr, city, email, phone) values (?, ?, ?, ?, ?, ?)";
$STH->execute($data);
如果数组中的值存在,是否只能更新列? 示例:如果$ var3和$ var4为空,则数据库中不会存储任何内容,因为" addr"和"城市"?
答案 0 :(得分:0)
对于那里的任何其他noob,只要你的mysql行允许为null,就可以接受将空值插入数据库。您可能还希望为它们提供默认值null。
见这篇文章:
MySQL, better to insert NULL or empty string?
感谢大家的帮助。
答案 1 :(得分:-1)
理想情况下,您要将表设置为不允许这些字段的空值。否则,在PHP端,您只需检查值是否已设置且不为空:
if (isset($var1, $var2, $var3, $var4, $var5, $var6)) {
$data = array($var1, $var2, $var3, $var4, $var5, $var6);
$STH = $DBH->("INSERT INTO users (first, last, addr, city, email, phone) values (?, ?, ?, ?, ?, ?)";
$STH->execute($data);
}
除非您还想插入?在这种情况下,只需将值初始化为空字符串或其他:
$data = array($var1?:"", $var2?:"", $var3?:"", $var4?:"", $var5?:"", $var6?:"");