Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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_Load Data Infile - Fatal编程技术网

Mysql “字段列表”中的未知列“添加日期”

Mysql “字段列表”中的未知列“添加日期”,mysql,load-data-infile,Mysql,Load Data Infile,我正在尝试加载数据填充并得到上述错误 LOAD DATA INFILE '$file' REPLACE INTO TABLE $custom_parts FIELDS TERMINATED BY ',' ESCAPED BY '\\\\' LINES TERMINATED BY '\\r\\n' IGNORE 1 LINES (`partsno`, `mfg`, `cond`, `price`, `is_deleted`, @date_added) SET `date_added` =

我正在尝试加载数据填充并得到上述错误

LOAD DATA INFILE '$file'
REPLACE INTO TABLE $custom_parts
FIELDS TERMINATED BY ',' ESCAPED BY '\\\\'
LINES TERMINATED BY '\\r\\n'
IGNORE 1 LINES
 (`partsno`, `mfg`, `cond`, `price`, `is_deleted`, @date_added)
   SET `date_added` = STR_TO_DATE(@date_added, '%c/%e/%Y'),
  `prtky` = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(partsno, ' ', '' ) 
   , '\\\\', '' ) , '/', '' ) , '_', '' ) , '.', '' ) , '-', '' )
文件的列是这样的

Part Number,MFR,Condition,price,is_deleted,date_added

每当我运行PHP来加载它时,都会出现错误。我被问到为什么会发生这种事。我认为这是一个没有分配用户变量的问题,我只是在寻找验证。

您不能将变量用于动态表名。 您只能使用准备好的语句来执行此操作

然而 不能在存储过程中使用load data infile,我也不确定是否可以在准备好的语句中使用它

如果您使用来自更高级别程序php、pascal的MySQL,请尽可能

在构造查询之前解析变量; 对照白名单检查columnname以防止SQL注入 将扩展语句馈送给MySQL。 有关示例代码,请参见此问题:


另外,如果您使用的是动态表名,请使用“backticks”对其进行转义。如果表名包含有趣的字符或是保留字,这可以防止MySQL爆炸

我回答了我自己的问题。-在大多数允许使用表达式的上下文中都可以使用用户变量。这当前不包括显式要求文本值的上下文,例如SELECT语句的LIMIT子句或LOAD DATA语句的IGNORE N LINES子句中的上下文

表不是动态的。这是PHP文件中准备好的语句。如果我从用户变量中声明该列,则该语句可以正常工作,但我需要str_to_date部分的变量,并且可能需要每个mysql,我回答了我自己的问题。-用户变量可以在允许表达式的大多数上下文中使用。这当前不包括显式要求文本值的上下文,例如SELECT语句的LIMIT子句或LOAD DATA语句的IGNORE N LINES子句中的上下文。@Johan动态表名不能使用变量。你只能用事先准备好的陈述来做这件事,-我不确定我是否同意这一点。使用准备好的语句,不能将占位符用作表名,也不能将值绑定到占位符。可以使用变量表示动态表名。你是这个意思吗?