【问题标题】:Active record query remove qoutes from list of integer values活动记录查询从整数值列表中删除引号
【发布时间】:2017-04-17 08:05:16
【问题描述】:

我下面有这段代码

\CI::db()->select($select)->join('customers', 'customers.id = orders.customer_id', 'left')->join('customers_address_bank as shipping', 'shipping.id = orders.shipping_address_id', 'left')->join('customers_address_bank as billing', 'billing.id = orders.billing_address_id', 'left');
 \CI::db()->where_in('orders.id',$orderNumber);

它生成这个查询

SELECT `gc_orders`.*, `gc_customers`.*, `gc_orders`.`id` as `id`, `shipping`.`id` as `shipping_id`, `billing`.`id` as `billing_id`, `shipping`.`customer_id` as `shipping_customer_id`, `billing`.`customer_id` as `billing_customer_id`, `shipping`.`company` as `shipping_company`, `billing`.`company` as `billing_company`, `shipping`.`firstname` as `shipping_firstname`, `billing`.`firstname` as `billing_firstname`, `shipping`.`lastname` as `shipping_lastname`, `billing`.`lastname` as `billing_lastname`, `shipping`.`email` as `shipping_email`, `billing`.`email` as `billing_email`, `shipping`.`phone` as `shipping_phone`, `billing`.`phone` as `billing_phone`, `shipping`.`address1` as `shipping_address1`, `billing`.`address1` as `billing_address1`, `shipping`.`address2` as `shipping_address2`, `billing`.`address2` as `billing_address2`, `shipping`.`city` as `shipping_city`, `billing`.`city` as `billing_city`, `shipping`.`zone` as `shipping_zone`, `billing`.`zone` as `billing_zone`, `shipping`.`zip` as `shipping_zip`, `billing`.`zip` as `billing_zip`, `shipping`.`country` as `shipping_country`, `billing`.`country` as `billing_country`, `shipping`.`country_code` as `shipping_country_code`, `billing`.`country_code` as `billing_country_code`, `shipping`.`country_id` as `shipping_country_id`, `billing`.`country_id` as `billing_country_id`, `shipping`.`zone_id` as `shipping_zone_id`, `billing`.`zone_id` as `billing_zone_id`, `shipping`.`deleted` as `shipping_deleted`, `billing`.`deleted` as `billing_deleted` FROM `gc_orders` LEFT JOIN `gc_customers` ON `gc_customers`.`id` = `gc_orders`.`customer_id` LEFT JOIN `gc_customers_address_bank` as `shipping` ON `shipping`.`id` = `gc_orders`.`shipping_address_id` LEFT JOIN `gc_customers_address_bank` as `billing` ON `billing`.`id` = `gc_orders`.`billing_address_id` WHERE `gc_orders`.`id` IN**('14,12')**

我想删除这些 qoutes。请帮助

【问题讨论】:

  • 问题出在$orderNumber 可以显示var_dump($orderNumber); 的值吗?
  • 是的,它是一个使用 implode(',',$ordernumber) 转换为字符串的数组

标签: php codeigniter activerecord


【解决方案1】:

问题不在于引号。检查这个:

 WHERE `gc_orders`.`id` IN**('14,12')**

应该是这样的:

WHERE `gc_orders`.`id` IN(14,12);  // If the column is integer

WHERE `gc_orders`.`id` IN('14','12');  // If the column is varchar

【讨论】:

    【解决方案2】:

    要么这样尝试:-

    $orderNumber = array(14,12);
    $this->db->where_in('id', $orderNumber);
    

    或者:-

    $orderNumber = array (14,12);
    $orderNumber = "('".implode("','",$orderNumber)."')";
    $this->db->where_in('id', $orderNumber);
    

    或者:-

    $orderNumber = "'".implode("','",$orderNumber)."'";
    $this->db->where_in('id', $orderNumber);
    

    或者:-

    $orderNumber = implode("','",$orderNumber);
    $this->db->where_in('id', $orderNumber);
    

    【讨论】:

      【解决方案3】:

      你需要传递orderNumberlike的数组

      $orderNumber = array(14,12);
      $this->db->where_in('id', $orderNumber);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-30
        • 2015-03-04
        • 2014-02-01
        • 2017-01-28
        相关资源
        最近更新 更多