【问题标题】: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】:

    如果ipPRIMARY KEYUNIQUE 键,那么只需

    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】:

      来自@kwo​​xer 的略微增强的答案(注意表名周围的 {}):

      <?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;');
        ?>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多