【问题标题】:MySQL query with codeigniter (active record)使用 codeigniter 的 MySQL 查询(活动记录)
【发布时间】:2012-11-15 19:16:31
【问题描述】:

我在 codeigniter 中使用以下查询:

$this->db->select('products.id,
                   categories.name as cat_name, 
                   products.name as name,
                   products.product_image,
                   products.description,
                   products.price,
                   products.furl,
                   products.on_sale,
                   products.quantity_in_stock,
                   products.product_code,
                   products.rating_1,
                   products.rating_2,
                   products.rating_3,
                   products.rating_4,
                   products.rating_5,
                   products.rated_by,
                   products.discount,
                   ((products.rating_1+products.rating_2,
                     products.rating_3,
                     products.rating_4,
                     products.rating_5)/rated_by  as calc)
');

我在检查 calc 附近的 sql 语法时遇到错误。请解释问题的出处和原因。 p.s:我只是想按这样的子句顺序使用 calc:

$this->db->order_by('calc','desc');
$this->db->get();

更新:这是我在执行此查询时得到的:

Error Number: 1064

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'as calc) FROM (products) JOIN categories ON categories.id=products.`ca' 附近使用正确的语法

【问题讨论】:

  • 不应该是products.rating_1+products.rating_2+products.rating_3+products.rating_4+products.rating_5)/rated_by as calc。尝试 print_r() 查询,它应该会给你形成的 SQL 语句,便于调试。
  • 试试$this->db->get('your_table_name');

标签: mysql codeigniter activerecord


【解决方案1】:

如果您打算使用别名,那么您不希望 CodeIgnioter 自动在您的列名周围添加刻度,因为它会搞砸。只需将select() 的第二个参数设置为false 即可关闭此行为:

$this->db->SELECT(  
                 'products.id,categories.name as cat_name,  
                  products.name as name,  
                  products.product_image,  
                  products.description,  
                  products.price,  
                  products.furl,  
                  products.on_sale,  
                  products.quantity_in_stock,  
                  products.product_code,  
                  products.rating_1,  
                  products.rating_2,  
                  products.rating_3,  
                  products.rating_4,  
                  products.rating_5,  
                  products.rated_by,  
                  products.discount,  
                  ((products.rating_1+products.rating_2,  
                    products.rating_3,products.rating_4,  
                    products.rating_5)/rated_by  as calc)', false)  ;

【讨论】:

  • nopes 不工作...收到此错误“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以获取在 'as calc 附近使用的正确语法) FROM ( products) 加入 categories ON categories.id=products.`ca' 在第 1 行"
【解决方案2】:

是的,你是对的@John

$this->db->select('products.id,categories.name as cat_name, products.name as name,products.product_image,products.description,products.price,products.furl,products.on_sale,products.quantity_in_stock,products.product_code,products.rating_1,products.rating_2,products.rating_3,products.rating_4,products.rating_5,products.rated_by,products.discount,((products.rating_1+products.rating_2,products.rating_3,products.rating_4,products.rating_5)/rated_by  as calc)', false)  ;

也为我工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 2015-05-10
    • 2012-01-23
    • 2018-07-11
    相关资源
    最近更新 更多