我正在使用prestashop 1.6.0.9

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

<?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;
        }
    }
}


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

最佳答案

如果我可以为您提供解决方案,那么字符串比较“总是”是一个魔术,因此我可以这样进行:

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

关于php - MySQL查询过滤,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28320274/

10-12 01:18