【发布时间】:2021-03-10 11:28:59
【问题描述】:
我尝试在 PostgreSQL 13 和 php 形式的表中导入 csv 文件(初学者)。
表中有两种外键整数类型,一种可以为空。因此,当我导入文件时,我会收到其中一个的常见消息 invalid input syntax for type integer。
继this post之后,NullIf() 函数似乎是一个简单的解决方案。
我找不到正确的使用方法:
$sql = "INSERT INTO activite.us (numus, gidgeo, gidaxe)
VALUES ('".$getData[0]."','".$getData[10]."', NULLIF('".$getData[11]."', '') " ;
外键是最后一个变量。
- 我尝试用 NULL 替换第二个参数;
- 我尝试了
'NULLIF("...")'和其他一些错误组合。
如何解决这个问题? 谢谢。
【问题讨论】:
-
(可能)旁注:不要使用字符串插值或连接将值获取到 SQL 查询中。这很容易出错,并且可能使您的程序容易受到 SQL 注入攻击。使用参数化查询。
-
这取决于语法错误实际上是什么,所以请在您的问题中显示整个错误消息。很确定
NULLIF不是答案。最佳做法是创建一个包含所有varchar字段的表并导入其中,然后在传输到最终表之前/之前进行清理。
标签: php postgresql nullif