codeigniter:复杂的mysql选择不再工作了

时间:2013-02-02 16:01:07

标签: codeigniter

我有这个简单的代码可以正常工作:

$sQuery = $this->db->query("SELECT domain FROM domainmarket.inventory_domains");

但是当我使用这个

$sQuery = $this->db->query("SELECT
                              invDom.domain,
                              sldPhr.phrase1
                            FROM domainmarket.inventory_domains invDom
                              INNER JOIN lux.domain_info domInfo
                                ON invDom.domain = domInfo.domain
                              JOIN lux.sld_stats sldStats
                                ON domInfo.sld = sldStats.sld
                              JOIN lux.sld_phrase sldPhr
                                ON sldPhr.sld = sldStats.sld");

或者

$sQuery = $this->db->query("SELECT
                              invDom.domain,
                              sldPhr.phrase1
                            FROM domainmarket.inventory_domains invDom
                              INNER JOIN lux.domain_info domInfo
                                ON invDom.domain = domInfo.domain
                              JOIN lux.sld_stats sldStats
                                ON domInfo.sld = sldStats.sld
                              JOIN lux.sld_phrase sldPhr
                                ON sldPhr.sld = sldStats.sld
                            WHERE SOUNDEX(SUBSTRING_INDEX(invDom.domain, ".", 1)) = SOUNDEX('love')
                            ORDER BY invDom.appraised_price DESC");

它已经出现了这个错误:

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to
allocate 32 bytes) in
C:\xampp\htdocs\ci_test\system\database\drivers\mysql\mysql_result.php
on line 152

  

错误号码:1064         您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获得正确的语法     靠近'1))= SOUNDEX('love')ORDER BY invDom.app'在第5行         SELECT invDom.domain,sldPhr.phrase1 FROM domainmarket.inventory_domains invDom INNER JOIN lux.domain_info   dominfo命令         ON invDom.domain = domInfo.domain JOIN lux.sld_stats sldStats         ON domInfo.sld = sldStats.sld JOIN lux.sld_phrase sldPhr         ON sldPhr.sld sldStats.sld WHERE SOUNDEX(SUBSTRING_INDEX(invDom.domain ,, 1))= SOUNDEX('love')ORDER   BY invDom.appraised_price DESC文件名:   C:\ xampp \ htdocs \ ci_test \ system \ database \ DB_driver.php行号:   33

分别。这两个代码在heidiSQL中运行良好但是..为什么我在codeigniter中得到这个错误?

2 个答案:

答案 0 :(得分:0)

这是一个引用问题。您将查询包装在"中,然后在查询中使用它们。

$sQuery = $this->db->query("
SELECT invDom.domain, sldPhr.phrase1 FROM domainmarket.inventory_domains invDom
INNER JOIN lux.domain_info domInfo ON invDom.domain = domInfo.domain
JOIN lux.sld_stats sldStats ON domInfo.sld = sldStats.sld
JOIN lux.sld_phrase sldPhr ON sldPhr.sld = sldStats.sld
WHERE SOUNDEX( SUBSTRING_INDEX(invDom.domain, '.', 1) ) = SOUNDEX('love')
ORDER BY invDom.appraised_price DESC");

答案 1 :(得分:0)

不要在查询中使用双逗号,而是使用单个逗号,因为它是冲突的。

SELECT
  invDom.domain,
  sldPhr.phrase1
FROM domainmarket.inventory_domains invDom
  INNER JOIN lux.domain_info domInfo
    ON invDom.domain = domInfo.domain
  JOIN lux.sld_stats sldStats
    ON domInfo.sld = sldStats.sld
  JOIN lux.sld_phrase sldPhr
    ON sldPhr.sld = sldStats.sld
WHERE SOUNDEX(SUBSTRING_INDEX(invDom.domain, '.', 1)) = SOUNDEX('love')
ORDER BY invDom.appraised_price DESC