Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 仅当表中不存在插入值时才发出插入值_Mysql_Orm_Coldfusion - Fatal编程技术网

Mysql 仅当表中不存在插入值时才发出插入值

Mysql 仅当表中不存在插入值时才发出插入值,mysql,orm,coldfusion,Mysql,Orm,Coldfusion,我正在将电子表格读入查询。然后将这些值插入数据库表中。我只想在目标表中不存在一个值ie PartNumber时执行插入 我正在使用下面的代码首先检查副本。但是,在插入itemPN列时,我仍然遇到了重复的问题,该列不允许重复值 如果我刷新下面的页面,它将再插入几十个值,并由于另一个重复而挂起。如果我刷新它4次左右,它将插入我需要的117条记录。我不明白为什么代码有时有效,但有时失败。每次尝试时,它似乎都挂在同一行上。格式化变量的不同尝试产生了相同的结果 <cfspreadsheet acti

我正在将电子表格读入查询。然后将这些值插入数据库表中。我只想在目标表中不存在一个值ie PartNumber时执行插入

我正在使用下面的代码首先检查副本。但是,在插入itemPN列时,我仍然遇到了重复的问题,该列不允许重复值

如果我刷新下面的页面,它将再插入几十个值,并由于另一个重复而挂起。如果我刷新它4次左右,它将插入我需要的117条记录。我不明白为什么代码有时有效,但有时失败。每次尝试时,它似乎都挂在同一行上。格式化变量的不同尝试产生了相同的结果

<cfspreadsheet action="read" 
     src="#downloadDir#import.xls" 
     query="qxldata" 
     excludeheaderrow="yes" 
     columnnames="PartNumber,Name,Price,Category,IsActive,Location,Description,remarks,SubLocation">

<cfoutput query="qxldata" startrow="3">
   <cfset xlPN=qxldata.PartNumber>

   <cfquery name="noDup">
      SELECT * 
      FROM   Items
      WHERE  itemPN = #xlPN#
   </cfquery>

   <cfif NOT noDup.RecordCount EQ 1>
       <cfscript>
          //Insert a new item
          item = new items();
          item.setitemPN(PartNumber);
          item.setitemName(Name);
          item.setitemCategory(Category);
          item.setitemDescription(Description);
          item.setitemBarcodeName("bc"&PartNumber&".jpg");
          item.setitemImageName(PartNumber&".jpg");
          item.setitemReorderPoint(NumberFormat("", 0.00));
          item.setitemReorderQuantity(NumberFormat("", 0.00));
          item.setitemLocation(Location);
          item.setitemSubLocation(SubLocation);
          item.setitemLength(NumberFormat("", 0.00));
          item.setitemWidth(NumberFormat("", 0.00));
          item.setitemHeight(NumberFormat("", 0.00));
          item.setitemRemarks(remarks);
          item.setitemIsActive(IsActive);
          item.setitemVendorID("1");
          item.setitemPrice(NumberFormat(Price, 0.00));
          EntitySave(item);
       </cfscript>
    </cfif>
</cfoutput>

谢谢你的关注

像这样进行故障排除:

<cfoutput query="qxldata" startrow="3" maxrows="3">
<cfset xlPN=qxldata.PartNumber>
 #xlPN# <br>
</cfoutput>
为此:

WHERE itemPN = #PartNumber#
或者更好的方法是:

WHERE itemPN = <cfqueryparam cfsqltype="cf_sql_integer" value="#PartNumber#">

如果我输出:qxldata.PartNumber、PartNumber、noDup.RecordCount,我将获得与noDup RecordCount一起的成对数字。当一个错误抛出时,我将得到两组30323032,0。这些数字看起来是相同的,但我尝试了修剪等,以确保coldfusion对它们的查看是相同的。如果我在浏览器上点击refresh,mySQL会对插入的数字感到满意,但另一个会抛出错误。我更改了代码以匹配上一个WHERE语句,但处理在下一个循环中查找记录时似乎没有始终注意到第一次插入?
WHERE itemPN = #PartNumber#
WHERE itemPN = <cfqueryparam cfsqltype="cf_sql_integer" value="#PartNumber#">