/** * Returns a quoted and escaped string of $data for use in an SQL statement. * * @param string $data String to be prepared for use in an SQL statement * @param string $column * @param int $safe * @return string Quoted and escaped * @access public */ public function value($data, $column = null, $safe = false) { $parent = parent::value($data, $column, $safe); if ($parent != null) { return $parent; } if ($data === null) { return 'NULL'; } switch ($column) { case 'boolean': if ($data === '') { return 0; } $data = $this->boolean((bool) $data); break; case 'integer': if ($data === '') { return 'NULL'; } break; case 'datetime': if ($data) { $data = trim(str_replace('/', '-', $data)); } if ($data === '' || $data == '0000-00-00 00:00:00') { return "''"; } break; default: if ($data === '') { return "''"; } $data = $this->_connection->quote($data); return $data; break; } return "'" . $data . "'"; }
/** * Returns a quoted and escaped string of $data for use in an SQL statement. * * @param string $data String to be prepared for use in an SQL statement * @param string $column * @param int $safe * @return string Quoted and escaped */ public function value($data, $column = null, $safe = false) { // ================================================================ // MEMO 2016/08/07 ryuring // SQLiteで、CakeSchemaが出力するスキーマファイルにおいて、 // boolean に初期値を設定していた場合 false だと、 // 'default' => "'0'" と出力され、値変換時に true と判定されてしまう。 // フィールドのデータに初期値を設定しない事が一番望ましいが設定されている場合に // バグとなるので念の為対応しておく // ================================================================ if ($column == 'boolean' && ($data === "'0'" || $data === "'1'")) { return $data; } $parent = parent::value($data, $column, $safe); if ($parent != null) { return $parent; } if ($data === null) { return 'NULL'; } switch ($column) { case 'boolean': if ($data === '') { return 0; } $data = $this->boolean((bool) $data); break; case 'integer': if ($data === '') { return 'NULL'; } break; case 'datetime': if ($data) { $data = trim(str_replace('/', '-', $data)); } if ($data === '' || $data == '0000-00-00 00:00:00') { return "''"; } break; default: if ($data === '') { return "''"; } $data = $this->_connection->quote($data); return $data; break; } return "'" . $data . "'"; }