微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在安装模块期间,Db Insert在Prestashop 1.7中返回false

如何解决在安装模块期间,Db Insert在Prestashop 1.7中返回false

我试图在我的新建表中插入一行,但是它返回false。查看Prestashop开发文档,我可以看到Db::getInstance返回的对象是function to insert

我还可以看到在此示例中使用了psql()方法,我假设该方法在将输入注入SQL查询之前将其剥离。 (奇怪的是为什么他们不仅使用准备好的语句,而且还是要使用它。)

我当前的代码如下:

public function install()
{
    if(!\Db::getInstance()->execute(
        'CREATE TABLE IF NOT EXISTS `' . self::DB_PREFIX . 'iezon_portfolio` ('
        . ' `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,'
        . ' `img_link` VARCHAR (120) NOT NULL,'
        . ' `title` VARCHAR (80) NOT NULL,'
        . ' `description` VARCHAR(1024) NOT NULL,'
        . ' `created_on` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,'
        . ' `company_name` VARCHAR(30) NOT NULL,'
        . ' `company_url` VARCHAR(80) NOT NULL,'
        . ' `testimonial` VARCHAR(255) NOT NULL,'
        . ' PRIMARY KEY(`id`)'
        . ' ) ENGINE=' . self::sql_ENGINE . ' DEFAULT CHARSET="utf8";'
    )) {
        # Table gets inserted fine
        return false;
    }

    if(!$this->create(
        '/img/prestashop-logo-1578759072.jpg','My First Testimonial','Lorem ipsum dolor sit amet conse ctetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim.','Lorem Ipsum','#',sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim.'
    )) {
        return false; # This returns false,no row was created
    };

    return parent::install();
}

public function create( $img,$title,$description,$company,$company_url,$testimonial )
{
    return \Db::getInstance()->insert(self::DB_PREFIX . 'iezon_portfolio',array(
        'img_link' => psql($img),'title' => psql($title),'description' => psql($description),'company_name' => psql($company),'company_url' => psql($company_url),'testimonial' => psql($testimonial)
    ));
}

似乎insert()由于某种原因而失败。谁能指出我正确的方向?我是使用Prestashop的新手。

解决方法

您无需将DB_PREFIXinsert方法一起使用,PrestaShop前缀会自动添加

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。