2

substr(trim('SOME_FORM_VALUE'),0,7),在将它们提交到数据库之前,我正在使用一些表单值。

已提交空白的表单字段在数据库中最终为0 (零)。如果我删除substr()一切都很好,并且数据库中没有任何价值。数据库 (InnoDB) 列设置为VARCHAR不是 null

代码示例:

$data_Arr = array(
'SOME_TABLE_COLUMN1' => substr(trim('SOME_FORM_VALUE1'),0,7),
'SOME_TABLE_COLUMN2' => substr(trim('SOME_FORM_VALUE2'),0,50)
);

$this->db->update('SOME_TABLE', $data_Arr);

最后一个 MySQL 查询最终看起来像这样:

INSERT INTO `SOME_TABLE` (`SOME_TABLE_COLUMN1`, `SOME_TABLE_COLUMN2`)
VALUES (0, 0);
  • 为什么0 (零)是 substr() 在空表单字符串上的结果?
  • 知道如何防止输入 0 (零)吗?

谢谢大家:)

4

3 回答 3

2

substr()

返回提取的字符串部分;或 FALSE 失败,或空字符串。

因此,如果您尝试返回超出范围的字符串部分,您可能会将错误值转换为 0。

于 2013-02-11T03:28:24.600 回答
1

我认为您可以尝试在 substr 之前使用 if 进行测试

   if (strlen($string) > 7){
    $file_name= substr(trim($string,0,$max)); 
   } 
于 2013-02-11T03:31:07.110 回答
0

使用的 'mb_strimwidth' - 在空字符串的情况下不会解析为零。

<?php
echo mb_strimwidth("Hello World", 0, 10);
// outputs Hello W
?>
于 2015-01-30T08:53:57.867 回答