Solved

problem with query

Posted on 2006-06-15
12
188 Views
Last Modified: 2013-12-24
hi have a little problem with this one could any one help?



 The value "UPDATE manufacturers SET name = '" cannot be converted to a number



            <cfif FORM.image IS "">
                  <cfset sql = "UPDATE manufacturers SET name = '" + #FORM.name# + "', contactName = '" + #FORM.contactName# + "', address = '" + #HTMLCodeFormat(FORM.address)# + "', postCode = '" + #FORM.postCode# + "', tel = '" + #FORM.tel# + "', fax = '" + #FORM.fax# + "', email = '" + #FORM.email# + "', website = '" + #FORM.website# + "', description = '" + #FORM.description# + "' WHERE manId = '" + #FORM.manId#  + "'">
            

            <cfelse>                  
                  another query here
            </cfif>
            <cfquery name="updateManufacturer" datasource="#dbSource#" username="#dbUsername#" password="#dbPassword#">
                  #sql#
            </cfquery>
            <cfset success = TRUE>
            <cfelse>
            <cfoutput> Please Reduce you input</cfoutput>
      </cfif>
      
0
Comment
Question by:pigmentarts
12 Comments
 
LVL 9

Expert Comment

by:73Spyder
ID: 16914176
First off.  I would write the query this way .  Much easier to read and trouble shoot.   I think the error is with the phone or fax number.  What are the data types for these feilds?  and are you padding hyphens in the form.  ie..   212-555-1212   Or just a number  2125551212

<cfif FORM.image IS "">
    <cfquery name="updateManufacturer" datasource="#dbSource#" username="#dbUsername#" password="#dbPassword#">
    UPDATE manufacturers
    SET name = '#FORM.name#',
    contactName = '#FORM.contactName#',
    address = '#HTMLCodeFormat(FORM.address)#',
    postCode = '#FORM.postCode#',
    tel = '#FORM.tel#',
    fax = '#FORM.fax#',
    email = '#FORM.email#',
    website = '#FORM.website#',
    description = '#FORM.description#'
    WHERE manId = '#FORM.manId#'
    </cfquery>
  <cfelse>              
    <cfquery name="updateManufacturer" datasource="#dbSource#" username="#dbUsername#" password="#dbPassword#">
    another query here
    </cfquery>      
</cfif>

<cfset success = TRUE>
<cfelse>
<cfoutput> Please Reduce you input</cfoutput>
</cfif>
0
 
LVL 9

Accepted Solution

by:
73Spyder earned 400 total points
ID: 16914189
Follow up.  I would also use the <cfqueryparam> tag in the query instead of each value inside of '' s
0
 
LVL 7

Assisted Solution

by:ExpertAdmin
ExpertAdmin earned 100 total points
ID: 16915295
I think the problem is that you are using the + to concatenate and CF tries to add the values together. You should use "&" Instead:

<cfset sql = "UPDATE manufacturers SET name = '" & #FORM.name# & ...


Just for the record though, I completely agree with 73Spyder...I see no advantage to building a string as opposed to just making it a CFQuery tag.

M@
0
Use Case: Protecting a Hybrid Cloud Infrastructure

Microsoft Azure is rapidly becoming the norm in dynamic IT environments. This document describes the challenges that organizations face when protecting data in a hybrid cloud IT environment and presents a use case to demonstrate how Acronis Backup protects all data.

 
LVL 25

Expert Comment

by:dgrafx
ID: 16917284
not posting for points as these guys have your answer but I wanted to point out that:
since you are setting "sql" as a coldfusion var, the + sign is not going to concatenate, but tries to add.
you may have this confused with a query you've seen where you create a sql server (or whatever db) var like
sql = "UPDATE manufacturers SET name = '" + #FORM.name# + et cetera ...
coldfusion and sql server have different syntax for this type of thing
0
 
LVL 12

Author Comment

by:pigmentarts
ID: 16918271
the reason i am trying to put it in a string first is becuase the sql statment can be one or another so i dont want it set ie:

<cfif FORM.image IS "">
a sql string
<else>
a sql string
</cfif>

query with the the string here

i see what you are staying, i will try with the & and get back to you guys. thanks for your help!
0
 
LVL 12

Author Comment

by:pigmentarts
ID: 16918623
ok thanks, i have this

UPDATE manufacturers SET name = '#FORM.name#', contactName = '#FORM.contactName#', address = '#HTMLCodeFormat(FORM.address)#', postCode = '#FORM.postCode#', tel = '#FORM.tel#', fax = '#FORM.fax#', email = '#FORM.email#', website = '#FORM.website#', description = '#FORM.description#' WHERE manId = '#FORM.manId#'

UPDATE manufacturers SET name = ''Vitra'', contactName = ''test'', address = ''<PRE>dsasfdsf</PRE>'', postCode = ''sdfsdafs'', tel = ''13231231321'', fax = ''32312321312'', email = ''sdfsadf@yahoo.com'', website = ''fsdfdsfs'', description = ''Vitra is one of Europe''s leading bathroom manufacturers and sells products in over 50 countries worldwide.'' WHERE manId = ''1''

i still get this error:  [Macromedia][SQLServer JDBC Driver][SQLServer]Line 1: Incorrect syntax near 'Vitra'.

0
 
LVL 9

Expert Comment

by:73Spyder
ID: 16919303
The issue you are now getting is dealing with quotation marks.

use this tag  #PreserveSingleQuotes(mystring)#   ie.

UPDATE manufacturers SET name = <cfqueryparam cfsqltype="cf_sql_varchar" value="#PreserveSingleQuotes(FORM.name)#">,
contactName = <cfqueryparam cfsqltype="cf_sql_varchar" value="#PreserveSingleQuotes(FORM.contactName)#">,
address = <cfqueryparam cfsqltype="cf_sql_varchar" value="#HTMLCodeFormat(FORM.address)#">,
postCode = <cfqueryparam cfsqltype="cf_sql_varchar" value="#PreserveSingleQuotes(FORM.postCode)#">,
tel = <cfqueryparam cfsqltype="cf_sql_varchar" value="#PreserveSingleQuotes(FORM.tel)#">,
fax = <cfqueryparam cfsqltype="cf_sql_varchar" value="#PreserveSingleQuotes(FORM.fax)#">,
email = <cfqueryparam cfsqltype="cf_sql_varchar" value="#PreserveSingleQuotes(FORM.email)#">,
website = <cfqueryparam cfsqltype="cf_sql_varchar" value="#PreserveSingleQuotes(FORM.website)#">,
description = <cfqueryparam cfsqltype="cf_sql_varchar" value="#PreserveSingleQuotes(FORM.description)#">
WHERE manId = <cfqueryparam cfsqltype="cf_sql_varchar" value="#PreserveSingleQuotes(FORM.manId)#">

Probably a little bit of over kill here, but try this out.
0
 
LVL 9

Expert Comment

by:73Spyder
ID: 16919309
If you can use it, the cfqueryparam is a much more robust way of passing variables to sql.
0
 
LVL 12

Author Comment

by:pigmentarts
ID: 16919365
could you give me or a link to how to use cfqueryparam as the example i am finding are not too good.
0
 
LVL 9

Expert Comment

by:73Spyder
ID: 16919382
0
 
LVL 9

Expert Comment

by:73Spyder
ID: 16919385
Here are list of the possible cfsqltype 's that you can bind the values to
    * CF_SQL_BIGINT
    * CF_SQL_BIT
    * CF_SQL_CHAR
    * CF_SQL_BLOB
    * CF_SQL_CLOB
    * CF_SQL_DATE
    * CF_SQL_DECIMAL
    * CF_SQL_DOUBLE
    * CF_SQL_FLOAT
    * CF_SQL_IDSTAMP
    * CF_SQL_INTEGER
    * CF_SQL_LONGVARCHAR
    * CF_SQL_MONEY
    * CF_SQL_MONEY4
    * CF_SQL_NUMERIC
    * CF_SQL_REAL
    * CF_SQL_REFCURSOR
    * CF_SQL_SMALLINT
    * CF_SQL_TIME
    * CF_SQL_TIMESTAMP
    * CF_SQL_TINYINT
    * CF_SQL_VARCHAR


0
 
LVL 12

Author Comment

by:pigmentarts
ID: 16919406
thank you
0

Featured Post

Migrating Your Company's PCs

To keep pace with competitors, businesses must keep employees productive, and that means providing them with the latest technology. This document provides the tips and tricks you need to help you migrate an outdated PC fleet to new desktops, laptops, and tablets.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This is a guide to setting up a new WHM/cPanel Server to be used for web hosting accounts. It is intended for web hosting company administrators and dedicated server owners. For under $99 per month (considering normal rate of Big Data Cetnters like …
In our day to day coding, how many times have we come across a necessity to check whether a URL is a broken link or not? For those of you that answered countless and are using ColdFusion like myself, then this article is for you.  It will show yo…
This tutorial gives a high-level tour of the interface of Marketo (a marketing automation tool to help businesses track and engage prospective customers and drive them to purchase). You will see the main areas including Marketing Activities, Design …
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.

816 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now