我有PHP file
读取CSV文件并将值存储到SQL表中。
SQL表有4列
id - primary key (just auto incremented integer)
name - text value of an object name
type - an integer value representing the type of object
active - a bool to set if the object is active
问题是CSV file
不存储id,只存储名称和类型。
我想要执行以下操作,并想知道最好的方法是使用最少量的查询。
为表格中的每个条目设置active to 0
For each entry in the CSV
if (name and type already exists in table)
set active to 1
else
add new entry to the table
return the id for the existing or new entry
任何帮助将不胜感激
由于
答案 0 :(得分:1)
假设您使用的是mysql:
首先,您必须创建" unique" 2个字段的索引:name
和type
(它的一个索引不是两个)
然后使用此查询插入您的数据:
INSERT INTO `table` (`name`,`type`,`active`) VALUES ($name,$type,0) ON DUPLICATE KEY UPDATE active = 1
为了获取ID,您只需查询它(聪明的方式 - mysql_insert_id()不能使用INSERT UPDATE)
SELECT id FROM `table` WHERE `name`= '$name' AND `type` = '$type'