Tox*_*xid 3 mysql drupal upsert
我一直在尝试在drupal中运行一个查询,如果它们已经存在则会更新条目,如果没有,则插入一个新条目.代码现在看起来像这样:
db_query("IF EXISTS (SELECT %d FROM {uc_posten_packages.pid})
UPDATE {uc_posten_packages} SET title = '%s', label = '%s', cost = '%d', length = '%d', width ='%d', height = '%d', weight = '%d' WHERE pid = %d
ELSE
INSERT INTO {uc_posten_packages} VALUES ('%d', '%s', '%s', '%d', '%d', '%d', '%d', '%d')",$id, $title, $label, $rate, $length, $width, $height, $weight, $id, $id, $title, $label, $rate, $length, $width, $height, $weight);
Run Code Online (Sandbox Code Playgroud)
我不明白为什么该查询会引发错误.错误中的所有数字都是正确的
...near 'IF EXISTS (SELECT 1 FROM uc_posten_packages.pid) UPDATE uc_posten_packages ' at line 1 query:
IF EXISTS (SELECT 1 FROM uc_posten_packages.pid) UPDATE uc_posten_packages SET title = 'vfbv', label = 'bbv', cost = '22', length = '232', width ='22', height = '22', weight = '22' WHERE pid = 1 ELSE INSERT INTO uc_posten_packages VALUES ('1', 'vfbv', 'bbv', '22', '232', '22', '22', '22')
Run Code Online (Sandbox Code Playgroud)
这个查询是否有效和/或是否有更好的方法在drupal中处理这个问题?
你正在寻找的是被称为"upsert"(更新否则插入),并且有一个drupal函数:db_merge.好的文章在这里:http://drupal.org/node/310085
drupal_write_record()不会自动执行"upsert".它总是根据您传入的内容插入或更新,但不能同时插入或更新.
| 归档时间: |
|
| 查看次数: |
8672 次 |
| 最近记录: |