【问题标题】:Please can anyone convert this query into drupal insert query请任何人都可以将此查询转换为drupal插入查询
【发布时间】:2020-02-12 21:58:18
【问题描述】:
INSERT INTO ip_ranges (ip, TYPE)
SELECT * FROM (SELECT '12.13.14.15','blacklist') AS tmp
WHERE NOT EXISTS (
SELECT ip FROM ip_ranges WHERE ip = '12.13.14.15'
) LIMIT 1;
【问题讨论】:
标签:
php
mysql
sql
drupal
insert
【解决方案1】:
如果ip 是PRIMARY KEY 或UNIQUE 键,那么只需
INSERT IGNORE INTO ip_ranges (ip, `type`)
VALUES
('12.13.14.15','blacklist')
如果上述情况属实并且您想要插入或将类型更改为“黑名单”,然后执行
INSERT INTO ip_ranges (ip, `type`)
VALUES
('12.13.14.15','blacklist')
ON DUPLICATE KEY UPDATE
`type` = VALUES(`type`)
如果ip 不是主键,那么我不理解你的架构。
【解决方案2】:
来自@kwoxer 的略微增强的答案(注意表名周围的 {}):
<?php
$query = db_query('INSERT INTO {ip_ranges} (ip, TYPE) SELECT * FROM (SELECT '12.13.14.15','blacklist') AS tmp WHERE NOT EXISTS (SELECT ip FROM {ip_ranges} WHERE ip = '12.13.14.15') LIMIT 1;');
?>
【解决方案3】:
取决于您的 Drupal 版本。这是针对 Drupal 7 的:
<?php
$query = db_query('INSERT INTO ip_ranges (ip, TYPE) SELECT * FROM (SELECT '12.13.14.15','blacklist') AS tmp WHERE NOT EXISTS (SELECT ip FROM ip_ranges WHERE ip = '12.13.14.15') LIMIT 1;');
?>