gpt4 book ai didi

mysql - Coldfusion Post 到查询以构建查询

转载 作者:行者123 更新时间:2023-11-29 07:54:35 24 4
gpt4 key购买 nike

大家好。

我想动态构建一个动态查询。这就是我想做的。

<cfform name="form1" method="post" action="mysql_fix.cfm">

<table width="450" border="1">
<tr>
<td>Code</td>
<td>
<textarea name="codetoinsert" rows="5" cols="80"></textarea>
</td>
</tr>
<tr>
<td></td>
<td><cfinput type="submit" name="submit" value="submit">

</td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<table>
</cfform>

关于我的结果

<cfset codeis = #replacenocase(FORM.codetoinsert,chr(34),#CHR(39)#,"All")#>
<cfset codeis = #replacenocase(codeis,"#CHR(39)##CHR(39)#",#CHR(39)#,"All")#>
<cfquery name="dodata" datasource="#datasrc#">
#codeis#
</cfquery>

但是我收到这个错误。错误在双引号中。

我将其发布在文本区域

INSERT INTO payments
(description,amount,paytype,closed,customer,dateof,username,location,oldbalance,newbalance,invoiceno,closedtime,allocated,closeduser)
VALUES
('FOR Invoice No : 9960',0.00,'Account','Yes',7907,'2014/07/22 12:00:00','Ruby','2',3800.01,7600.02,9960,'2014/07/22 18:31:41','Yes','Ruby')

这是错误。它放入 ''

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FOR Invoice No : 9960'',0.00,''Account'',''Yes'',7907,''2014/07/22 12:00:00'',''' at line 1 

最佳答案

我当然希望代码不要公开:这是灾难的根源。

但是,无论如何,当您遇到数据库问题时,要做的第一件事就是查看发送到数据库的 SQL。不是你的 <cfquery> 中的 SQL标记(在您的情况下为 <textarea> ,但 CF 实际上发送到数据库驱动程序的 SQL。它显示在调试输出中。

如果您检查过这一点,您很可能会发现 CF 正在转义 SQL 语句中的所有单引号。这是设计使然(在我看来,其优点之一值得怀疑,但仍然如此)。

要使 CF 不这样做,请将 SQL 语句用 preserveSingleQuotes() 包装起来。 .

作为旁注:

  • 您不需要 #围绕表达式,除非它们在内部字符串或以某种方式混淆为文字(“When touse pound-signs”)
  • 您不应该传递硬编码在 SQL 字符串中的数据值,您应该将它们作为参数传递。它可能不是这样的如果这是用于临时查询执行,但作为一般规则,则会出现问题(“What one can and cannot do with <cfqueryparam> ”)

关于mysql - Coldfusion Post 到查询以构建查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25498824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com