записать в базу данных по Coldfusion - PullRequest
0 голосов
/ 04 февраля 2012

Я пишу документ submit.cfm. Я пытаюсь записать информацию о пользователях в новую пустую базу данных. Вот мой код:

<cfif ParameterExists(form.submit)>
<cfquery name="AddProfile" datasource="careers_acad_internship">
    INSERT INTO internships
        VALUES (
          '#form.stu_first#', '#form.stu_last#', 
          #form.stu_id#,      '#form.sup_name#', 
          '#form.sup_email#', #form.sup_phone#,
          '#form.emp_name#', '#form.emp_add#',
          '#form.spec_obj#', '#form.spec_duties#',
          '#form.semester#', #form.intern_year#,
          '#form.work_sche#', '#form.digital_sig#')        
</cfquery>

Но оказывается, что есть ошибка. Я не знаю, есть ли какие-то синтаксические ошибки или что-то еще.

Сообщение об ошибке ниже.

КОЛОННА 0
ID CFQUERY
ЛИНИЯ 24
RAW_TRACE на cfsubmit2ecfm1505563048.runPage (D: \ web \ careers \ acadeinternship \ submit.cfm: 24)
ШАБЛОН D: \ web \ careers \ acadeinternship \ submit.cfm
ТИП CFML

Спасибо

Ответы [ 4 ]

4 голосов
/ 04 февраля 2012

Если вы можете опубликовать полученную ошибку, это поможет.

Кроме того, ОГРОМНОЕ предложение - используйте cfqueryparam для вставленных значений, чтобы предотвратить внедрение SQL, например:

<cfqueryparam value="#form.stu_first#" cfsqltype="cf_sql_varchar">

Дважды проверьте ваши # знаки и отметки, не говоря уже о существовании этих переменных.Иногда я вставляю <cfabort> перед вставкой, и с включенным отладочным выводом вы можете затем прокрутить вниз и увидеть все переменные формы.Затем я скопирую / вставлю их, чтобы убедиться, что все написано правильно.

4 голосов
/ 04 февраля 2012

Во-первых, дважды проверьте ваши типы данных, я заметил, что вы указали некоторые переменные, но не другие, убедитесь, что ниже приведены правильные.

<cfquery datasource="foobar">
    INSERT INTO internships
        (stu_first,stu_last,stu_id,sup_name,sup_email,sup_phone,emp_name,emp_add,spec_obj,spec_duties,semester,intern_year,work_sche,digital_sig)
    VALUES(
        <cfqueryparam value="#form.stu_first#" cfsqltype="cf_sql_varchar" />,
        <cfqueryparam value="#form.stu_last#" cfsqltype="cf_sql_varchar" />,
        <cfqueryparam value="#form.stu_id#" cfsqltype="cf_sql_integer" />,
        <cfqueryparam value="#form.sup_name#" cfsqltype="cf_sql_varchar" />,
        <cfqueryparam value="#form.sup_email#" cfsqltype="cf_sql_varchar" />,
        <cfqueryparam value="#form.sup_phone#" cfsqltype="cf_sql_integer" />,
        <cfqueryparam value="#form.emp_name#" cfsqltype="cf_sql_varchar" />,
        <cfqueryparam value="#form.emp_add#" cfsqltype="cf_sql_varchar" />,
        <cfqueryparam value="#form.spec_obj#" cfsqltype="cf_sql_varchar" />,
        <cfqueryparam value="#form.spec_duties#" cfsqltype="cf_sql_varchar" />,
        <cfqueryparam value="#form.semester#" cfsqltype="cf_sql_varchar" />,
        <cfqueryparam value="#form.intern_year#" cfsqltype="cf_sql_integer" />,
        <cfqueryparam value="#form.work_sche#" cfsqltype="cf_sql_varchar" />,
        <cfqueryparam value="#form.digital_sig#" cfsqltype="cf_sql_varchar" />
    )
</cfquery>
4 голосов
/ 04 февраля 2012

Вам нужно включить список имен столбцов, чтобы вставить значения в например:

INSERT INTO internships (stu_first, stu_last, stu_id, sup_name,sup_email,sup_phone,emp_name,emp_add,sec_obj,spec_duties,semester,intern_year,work.sche,digital_sig) VALUES('#form.stu_first#','#form.stu_last#',#form.stu_id#,'#form.sup_name#','#form.sup_email#',#form.sup_phone#,'#form.emp_name#', '#form.emp_add#','#form.spec_obj#','#form.spec_duties#','#form.semester#',#form.intern_year#,'#form.work_sche#','#form.digital_sig#')

Если, конечно, имена ваших столбцов совпадают с именами переменных формы.

2 голосов
/ 04 февраля 2012

Две вещи выпрыгивают:

  1. Вы должны использовать <cfqueryparam> в своем операторе вставки (и любом другом запросе в вашем приложении). Это предотвращает внедрение SQL-кода, а также немного повышает производительность.
  2. Вы должны явно перечислить ваши столбцы в инструкции вставки перед предложением VALUES.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...