MySQL PHP - substr()导致0个零在空表单字段中输入数据库

时间:2013-02-11 03:23:56

标签: php mysql database substring

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

已提交为空白的表单字段在数据库中最终为 0 (ZERO)。 如果我删除 substr(),一切都很好,数据库中没有值。数据库(InnoDB)列设置为 VARCHAR 非空

代码示例:

$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 (ZERO)空表单字符串上的substr()结果?
  • 知道如何防止输入 0 (ZERO)吗?

全部谢谢:)

3 个答案:

答案 0 :(得分:3)

substr()

  

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

因此,如果您尝试返回超出边界的字符串部分,则可能会将false值转换为0。

答案 1 :(得分:2)

我认为您可以尝试使用if在substr

之前进行测试
   if (strlen($string) > 7){
    $file_name= substr(trim($string,0,$max)); 
   } 

答案 2 :(得分:0)

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

<?php
echo mb_strimwidth("Hello World", 0, 10);
// outputs Hello W
?>