2

substr(trim('SOME_FORM_VALUE'),0,7),データベースに送信する直前に、いくつかのフォーム値を使用しています。

空白で送信されたフォームフィールドは、データベースで0 (ゼロ)になります。substr()を削除すると、すべてが正常になり、データベースに値がなくなります。データベース(InnoDB)列は、nullではなく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);
  • 空のフォーム文字列のsubstr()の結果が0 (ゼロ)であるのはなぜですか?
  • 0 (ゼロ)が入力されないようにする方法 はありますか?

皆さんありがとう :)

4

3 に答える 3

2

substr()

文字列の抽出された部分を返します。または失敗の場合はFALSE、または空の文字列。

したがって、範囲外の文字列の一部を返そうとすると、false値が0に変換される可能性があります。

于 2013-02-11T03:28:24.600 に答える
1

substrの前にテストする場合は使用してみることができると思います

   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 に答える