MySQL查询过滤

时间:2015-02-04 11:29:41

标签: php mysql prestashop

我正在使用prestashop 1.6.0.9

我正在使用getFirstMessage()函数,如果系统或客户发送一条要在发票上显示的消息,它将返回消息。但是,我在这里挣扎着它的SQL。

<?php

Class Order extends OrderCore {
    public function getFirstMessage()
    {
        return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
            SELECT `message`
            FROM `'._DB_PREFIX_.'message`
            WHERE `id_order` = '.(int)$this->id.'
            ORDER BY `id_message`
        ');
    }
}

当客户订购某些商品时,默认邮件设置为“付款已接受”或“付款错误”。

我希望这样做,如果邮件是“付款接受”,它就不会返回消息,所以我这样做了。

<?php

Class Order extends OrderCore {
    public function getFirstMessage()
    {
        return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
            SELECT `message`
            FROM `'._DB_PREFIX_.'message`
            WHERE (`id_order` = '.(int)$this->id.')
            AND (`message` != "Payment accepted")
            ORDER BY `id_message`
        ');
    }
}

但是这不起作用,因为它仍然返回'付款接受',所以我试过了。

<?php

Class Order extends OrderCore {
    public function getFirstMessage()
    {
        $sql_val =  Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
            SELECT `message`
            FROM `'._DB_PREFIX_.'message`
            WHERE (`id_order` = '.(int)$this->id.')
            AND (`message` != "Payment accepted")
            ORDER BY `id_message`
        ');

        if(
            $sql_val == "Payment accepted"
        ) 
        {
            return "No Message";
        } else {
            return $sql_val;
        }
    }
}

那也失败了。所以现在我在这里想要一些关于我如何处理这个问题的建议?

1 个答案:

答案 0 :(得分:0)

如果我可以建议您一个解决方案,那么字符串比较总是&#39;一个神奇的技巧,所以我会这样做:

<?php
public function getFirstMessage()
{
    $sql_val = strtolower(parent::getFirstMessage());
    if(!strcmp($sql_val, 'payment accepted')){ // 
        // do stuff
    }
    else {
        // do other stuff
    }  
}