【发布时间】:2017-01-20 01:04:37
【问题描述】:
我已经完成了许多插入/更新,我一直在想的问题是我应该在哪里修剪我正在插入或更新的值。在这种情况下,我使用 ColdFusion 作为我的服务器端编程语言,而 SQL Microsoft 是我的数据库语言。因此,如果我正在插入,我应该修剪 ColdFusion 或 SQL 中的值吗?我必须两个都做吗?什么更有效率?我想知道如果我遵循一些推荐的步骤,这是否可以提高效率。这是我在其中一个插入代码中的示例:
<cfset userphone = trim(user_phonenum)>
<cfset userdob = trim(user_dob)>
INSERT INTO UserTest
( mm_phone,
mm_dob
)
VALUES
(
'#trim(userphone)#',
CASE WHEN LTRIM(RTRIM('#userdob#')) = '' THEN NULL ELSE LTRIM(RTRIM('#userdob#')) END
)
在上面的代码中,我使用了 ColdFusion trim,我设置了两个值 userphone 和 userdob。我应该在 SQL 插入语句中在那里或下面进行修剪吗?什么是更好和更有效的?如果有人可以提供帮助,请告诉我。谢谢。
【问题讨论】:
-
为什么不编码两种方式,用计时器包装它们,然后循环数千次,看看哪一种更快?我的猜测是,这并不重要。另外,请使用
cfqueryparam进行数据库输入。它不仅可以保护站点免受 SQL 注入,还可以重写userdob语句,使其更具可读性<cfqueryparam value="#userdob#" null="#len(userdob) EQ 0#" />。null属性是一个布尔值,当为 true 时将发送 NULL 而不是值。 -
两者都不是。在我们的主要应用程序中,我们在表单字段的 onBlur 事件中修剪用户输入。我们已设法将其放入 Application.cfm 或 cfc 文件中,因此它是自动的。另外,在您的示例中,如果 dob 代表出生日期,则尝试将日期存储为字符串是比空格更严重的问题。
-
有没有地方可以看到这个修剪
onBlur()? -
我们的函数是在 10 多年前编写的,但这里是更新的。 stackoverflow.com/questions/498970/trim-string-in-javascript
-
onBlur 解决方案将起作用,但请记住,它运行客户端。我总是建议在服务器端运行任何类型的数据清理或验证,以配合任何客户端代码。服务器将确保任何不良数据不会被传递,客户端代码将确保更好的用户体验。
标签: sql-server coldfusion sql-insert