我有一个数据库表,其中包含各种类型的各种列,包括一些可能重要或不重要的十进制类型列。我从数据库中读取了一条记录,并通过 error_log 使用 serialize($dbArray) 输出了结果关联数组,我可以清楚地看到这些列有一个“N”,表示它们包含一个 NULL 值。在 $form->populate($dbArray) 中使用相同的数组来“填充”表单。提交后,我再次将 error_log 与 serialize($dbArray) 一起使用,并且有问题的列现在将 'S(1):0' 作为序列化输出的值部分。
这对我来说是一个问题,因为我有一个大于 0 的验证器,当我没有向该特定元素添加任何值时,当我期望它通过时,它会失败。这些元素不是必需的元素,只应在输入某些内容时运行验证器,并且由于未返回 NULL,因此它会运行。NULL 值在某处转换为 0,随后在 DB 中转换为 0.00。
知道我需要做什么才能让表单在没有输入任何内容时返回 NULL 元素。我将元素定义为“文本”类型,用于大多数这种性质的元素。来自同一 DB 记录的 varchars 返回为 NULL,我想我记得一个日期列也保持 NULL 值。这些也是表单中的“文本”元素。
明天我会回来并进行更多调试,但是任何关于可能导致这种情况的想法都将不胜感激。